app_resources.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import pathlib
  2. import sqlmodel
  3. import sqlalchemy
  4. import sqlalchemy.engine.base
  5. from .users_loader import users_loader
  6. from .users_collection import users_collection
  7. from .product_app import product_app
  8. from .users_app import users_app
  9. from .directory_image import directory_image
  10. class app_resources:
  11. def __init__(self, config: object) -> None:
  12. self.__config = config
  13. self.__database = sqlmodel.create_engine(self.config.database_uri)
  14. self.__users = users_loader(self.config.users_path).collection
  15. sqlmodel.SQLModel.metadata.create_all(self.database)
  16. self.__users_app = users_app(self.users)
  17. self.__directory_image = directory_image(
  18. self.config.covers_path,
  19. self.config.thumbnails_dimension
  20. )
  21. self.__product_app = product_app(
  22. self.database,
  23. self.users,
  24. self.images
  25. )
  26. @property
  27. def users_app(self) -> users_app:
  28. return self.__users_app
  29. @property
  30. def images(self) -> directory_image:
  31. return self.__directory_image
  32. @property
  33. def product_app(self) -> product_app:
  34. return self.__product_app
  35. @property
  36. def database(self) -> sqlalchemy.engine.base.Engine:
  37. return self.__database
  38. @property
  39. def users(self) -> users_collection:
  40. return self.__users
  41. @property
  42. def config(self) -> object:
  43. return self.__config