import sqlmodel from .user import user from .secret import secret class secret_loader(sqlmodel.Session): def __init__(self, owner: user) -> None: if not owner.in_database: raise Exception("User to build loaded for not exists.") self.__owner = owner @property def owner(self) -> user: return self.__owner def append(self, target: secret) -> bool: if target.in_database or not target.is_ready: return False if self.get_by_name(target.name) is not None: return False self.add(target) self.commit() self.refresh(target) def get_by_name(self, target: str) -> secret | None: target = target.upper() query = sqlmodel.select(secret) query = query.where(user.id == self.owner.id) query = query.where(secret.name == target) query = query.limit(1) return self.exec(query).first()