from dataclasses import dataclass
from datetime import datetime, timedelta

from configs.firebase import DocumentReference, db
from functions.helpers import time
from V2.functions.main import DocumentData


@dataclass(kw_only=True)
class LastUpdate(DocumentData):
    timestamp:int = int((time.now() - timedelta(days=1)).timestamp())
    time: datetime = time.now() - timedelta(days=1)
    count:int = 0
    lastPage:int=1
    nextPage:int|str|None = None
    total:int=0
    type: str = "orders"
    message:str = ""

    @classmethod
    def get(cls, shopId:str, type:str="orders"):
        ref = db.document(f"{type}Updates/{shopId}").get()
        if ref.exists: return cls.from_dict({**ref.to_dict(), "id": shopId, "type": type})
        return cls(id=shopId, type=type)

    def save(self, count = 0,timestamp=datetime.now().timestamp(), time =datetime.now(), **kwargs):
        self.count = count
        self.timestamp = timestamp
        self.time = time
        ref:DocumentReference = db.document(f"{self.type}Updates/{self.id}")
        ref.set({**self.to_dict(), **kwargs})
        print("UPDATED",self.type,self.id)
