app_resources.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. from .autoadder import autoadder
  12. from .autoadder_app import autoadder_app
  13. class app_resources:
  14. def __init__(self, config: object) -> None:
  15. self.__config = config
  16. self.__database = sqlmodel.create_engine(self.config.database_uri)
  17. self.__users = users_loader(self.config.users_path).collection
  18. sqlmodel.SQLModel.metadata.create_all(self.database)
  19. self.__users_app = users_app(self.users)
  20. self.__directory_image = directory_image(
  21. self.config.covers_path,
  22. self.config.thumbnails_dimension
  23. )
  24. self.__autoadder = None
  25. google_api_key = self.config.google_api_key
  26. google_cx = self.config.google_cx
  27. if google_api_key is not None and google_cx is not None:
  28. self.__autoadder = autoadder(google_api_key, google_cx)
  29. self.__product_app = product_app(
  30. self.database,
  31. self.users,
  32. self.images
  33. )
  34. self.__reservation_app = reservation_app(
  35. self.database,
  36. self.users
  37. )
  38. self.__autoadder_app = autoadder_app(
  39. self.users,
  40. self.autoadder
  41. )
  42. @property
  43. def autoadder(self) -> autoadder:
  44. return self.__autoadder
  45. @property
  46. def autoadder_app(self) -> autoadder_app:
  47. return self.__autoadder_app
  48. @property
  49. def users_app(self) -> users_app:
  50. return self.__users_app
  51. @property
  52. def reservation_app(self) -> reservation_app:
  53. return self.__reservation_app
  54. @property
  55. def images(self) -> directory_image:
  56. return self.__directory_image
  57. @property
  58. def product_app(self) -> product_app:
  59. return self.__product_app
  60. @property
  61. def database(self) -> sqlalchemy.engine.base.Engine:
  62. return self.__database
  63. @property
  64. def users(self) -> users_collection:
  65. return self.__users
  66. @property
  67. def config(self) -> object:
  68. return self.__config