From c40fd7a3c9f3286eb94709c588045b1e7ed6af94 Mon Sep 17 00:00:00 2001 From: akhdanre Date: Wed, 26 Feb 2025 10:33:51 +0700 Subject: [PATCH] feat: dependencies injection for db setup done --- app/database/db.py | 6 +----- app/di_container.py | 5 +++-- app/main.py | 6 ++++-- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/app/database/db.py b/app/database/db.py index 94e08f2..0ed8e64 100644 --- a/app/database/db.py +++ b/app/database/db.py @@ -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: diff --git a/app/di_container.py b/app/di_container.py index 41ffa1e..45297bc 100644 --- a/app/di_container.py +++ b/app/di_container.py @@ -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( diff --git a/app/main.py b/app/main.py index 581b1f6..7dc630a 100644 --- a/app/main.py +++ b/app/main.py @@ -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")