feat: dependencies injection for db setup done
This commit is contained in:
parent
c46a43160c
commit
c40fd7a3c9
|
@ -1,10 +1,9 @@
|
|||
from flask_pymongo import PyMongo
|
||||
from flask import Flask
|
||||
from configs import Config
|
||||
from di_container import Container # Import your container
|
||||
|
||||
|
||||
def init_db(app: Flask, container: Container) -> PyMongo:
|
||||
def init_db(app: Flask) -> PyMongo:
|
||||
try:
|
||||
app.config["MONGO_URI"] = Config.MONGO_URI
|
||||
mongo = PyMongo(app) # Initialize PyMongo with the app
|
||||
|
@ -13,9 +12,6 @@ def init_db(app: Flask, container: Container) -> PyMongo:
|
|||
mongo.cx.server_info() # Ping the MongoDB server
|
||||
print("✅ MongoDB connection successful!")
|
||||
|
||||
# Store the MongoDB instance in the container
|
||||
container.mongo.override(mongo)
|
||||
|
||||
return mongo
|
||||
|
||||
except Exception as e:
|
||||
|
|
|
@ -2,16 +2,17 @@ from dependency_injector import containers, providers
|
|||
from repositories.user_repository import UserRepository
|
||||
from services import UserService, AuthService
|
||||
from controllers import AuthController
|
||||
from flask_pymongo import PyMongo
|
||||
|
||||
|
||||
class Container(containers.DeclarativeContainer):
|
||||
"""Dependency Injection Container"""
|
||||
|
||||
mongo = providers.Singleton(lambda: None)
|
||||
mongo = providers.Dependency()
|
||||
|
||||
user_repository = providers.Factory(
|
||||
UserRepository,
|
||||
mongo.db,
|
||||
mongo.provided.db,
|
||||
)
|
||||
|
||||
auth_service = providers.Factory(
|
||||
|
|
|
@ -11,10 +11,12 @@ def createApp() -> Flask:
|
|||
app = Flask(__name__)
|
||||
container = Container()
|
||||
|
||||
init_db(app, container)
|
||||
|
||||
app.container = container
|
||||
|
||||
mongo = init_db(app)
|
||||
if mongo is not None:
|
||||
container.mongo.override(mongo)
|
||||
|
||||
# Register Blueprints
|
||||
app.register_blueprint(default_blueprint)
|
||||
app.register_blueprint(auth_blueprint, url_prefix="/api")
|
||||
|
|
Loading…
Reference in New Issue