import sqlmodel import hashlib import Crypto class secret(sqlmodel.SQLModel, table = True): id: int | None = sqlmodel.Field(default = None, primary_key = True) name: str = sqlmodel.Field(default = None, index = True) domain: str = sqlmodel.Field(default = None, index = True) crypted: bytes = sqlmodel.Field(default = None) nonce: bytes = sqlmodel.Field(default = None) class secret_builder: def __init__(self): self.clean() def clean(self) -> None: self.__target = secret() @property def ready(self) -> bool: if self.__target.name is None or self.__target.domain is None: return False if self.__target.crypted is None or self.__target.nonce is None: return False return True @property def result(self) -> secret: if not self.ready: raise TypeError("Secret is not ready to load.") return self.__target @property def name(self) -> str | None: return self.__target.name @property def domain(self) -> str | None: return self.__target.domain def crypt(self, key: str, target: str) -> bool: pass