TIF_E41211115_Genso_quiz_ba.../app/di_container.py

43 lines
989 B
Python

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,
)