from app.repositories.base_repo import BaseRepo

from app.common.models import GlobalStore

class GlobalStoreRepo(BaseRepo):    
    def __init__(self, db):
        super().__init__(db)

    def create_or_update(self, key_name: str, value: str):
        """
        Create or update a global store record
        """
        global_store = self.get_by_field(GlobalStore, "key_name", key_name)
        if not global_store:
            return self.create(GlobalStore, data={"key_name": key_name, "value": value})
        else:
            global_store.value = value
            self.db.commit()
            self.db.refresh(global_store)
            return global_store
    
    def update_transfer_failure(self):
        global_store = self.get_by_field(GlobalStore, "key_name", "transfer_failure_count")
        return self.create_or_update("transfer_failure_count", str(int(global_store.value) + 1) if global_store else "1")