from dependency_injector import containers, providers from flask import Flask from flask_pymongo import PyMongo from repositories.user_repository import UserRepository from services.user_service import UserService from services.auth_service import AuthService class Container(containers.DeclarativeContainer): """Dependency Injection Container""" # Flask App Provider app = providers.Singleton( Flask, import_name=__name__, ) # Configurations config = providers.Configuration() # Initialize MongoDB mongo = providers.Singleton( PyMongo, app, ) # Initialize Repositories user_repository = providers.Factory( UserRepository, db=mongo.provided.db, ) # Initialize Services auth_service = providers.Factory( AuthService, user_repository=user_repository, ) user_service = providers.Factory( UserService, user_repository=user_repository, )