import inspect
from dataclasses import dataclass
from datetime import datetime

from configs.firebase import db
from V2.functions.main import DocumentData


@dataclass(kw_only=True)
class Application(DocumentData):
    name:str
    platformId:str
    platformName:str
    type:str
    hostname:str
    apiKey:str|None
    apiSecret:str|None

    @classmethod
    def get(cls,id:str, type="ecommerce"):
        if type == "ecommerce":
            ref = db.document(f"appsCredentials/{id}").get()
        elif type == "shipping":
            ref = db.document(f"shippingPlatformsCredentials/{id}").get()
        elif type == "payment":
            ref = db.document(f"paymentPlatformsCredentials/{id}").get()
        if ref.exists: return cls.from_dict(ref.to_dict())
   
    def save(self, **kwargs):
        self.id =f"{self.platformId}{self.enterpriseId}"
        db.document(f"apps/{self.id}").set(self.to_dict(), merge=True)
        db.document(f"appsCredentials/{self.id}").set({**self.to_dict(), **kwargs}, merge=True)
        return self
