app_resources.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. from .reservation_app import reservation_app
  11. class app_resources:
  12. def __init__(self, config: object) -> None:
  13. self.__config = config
  14. self.__database = sqlmodel.create_engine(self.config.database_uri)
  15. self.__users = users_loader(self.config.users_path).collection
  16. sqlmodel.SQLModel.metadata.create_all(self.database)
  17. self.__users_app = users_app(self.users)
  18. self.__directory_image = directory_image(
  19. self.config.covers_path,
  20. self.config.thumbnails_dimension
  21. )
  22. self.__product_app = product_app(
  23. self.database,
  24. self.users,
  25. self.images
  26. )
  27. self.__reservation_app = reservation_app(
  28. self.database,
  29. self.users
  30. )
  31. @property
  32. def users_app(self) -> users_app:
  33. return self.__users_app
  34. @property
  35. def reservation_app(self) -> reservation_app:
  36. return self.__reservation_app
  37. @property
  38. def images(self) -> directory_image:
  39. return self.__directory_image
  40. @property
  41. def product_app(self) -> product_app:
  42. return self.__product_app
  43. @property
  44. def database(self) -> sqlalchemy.engine.base.Engine:
  45. return self.__database
  46. @property
  47. def users(self) -> users_collection:
  48. return self.__users
  49. @property
  50. def config(self) -> object:
  51. return self.__config