43 lines
989 B
Python
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,
|
|
)
|