application.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import sqlmodel
  2. import sqlalchemy.engine.base
  3. from .settings import settings
  4. from .user import user
  5. from .user import user_builder
  6. from .user_loader import user_loader
  7. class application:
  8. def __init__(self, config: settings) -> None:
  9. self.__config = config
  10. self.__init_database(config.database)
  11. def get_provider(self) -> dict:
  12. return {
  13. "app_name": self.config.app_name,
  14. "description": self.config.app_description,
  15. "organization_name": self.config.organization_name
  16. }
  17. def post_register(self, nick: str, password: str) -> dict:
  18. builder = user_builder()
  19. builder.nick = nick
  20. builder.set_password(password)
  21. with user_loader(self.database) as loader:
  22. if loader.register(builder.result):
  23. return {
  24. "status": True
  25. }
  26. return {
  27. "status": False
  28. }
  29. @property
  30. def config(self) -> settings:
  31. return self.__config
  32. @property
  33. def database(self) -> sqlalchemy.engine.base.Engine:
  34. return self.__database
  35. def __init_database(self, url: str) -> None:
  36. self.__database = sqlmodel.create_engine(url)
  37. sqlmodel.SQLModel.metadata.create_all(self.__database)