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