secret_loader.py 946 B

123456789101112131415161718192021222324252627282930313233343536
  1. import sqlmodel
  2. from .user import user
  3. from .secret import secret
  4. class secret_loader(sqlmodel.Session):
  5. def __init__(self, owner: user) -> None:
  6. if not owner.in_database:
  7. raise Exception("User to build loaded for not exists.")
  8. self.__owner = owner
  9. @property
  10. def owner(self) -> user:
  11. return self.__owner
  12. def append(self, target: secret) -> bool:
  13. if target.in_database or not target.is_ready:
  14. return False
  15. if self.get_by_name(target.name) is not None:
  16. return False
  17. self.add(target)
  18. self.commit()
  19. self.refresh(target)
  20. def get_by_name(self, target: str) -> secret | None:
  21. target = target.upper()
  22. query = sqlmodel.select(secret)
  23. query = query.where(user.id == self.owner.id)
  24. query = query.where(secret.name == target)
  25. query = query.limit(1)
  26. return self.exec(query).first()