feat: done setup dependencies injection for auth

This commit is contained in:
akhdanre 2025-02-26 10:56:04 +07:00
parent c40fd7a3c9
commit b53e5f4cb6
5 changed files with 22 additions and 15 deletions

View File

@ -1,3 +1,4 @@
import sys
from flask import Blueprint from flask import Blueprint
from controllers import AuthController from controllers import AuthController
from di_container import Container from di_container import Container
@ -10,6 +11,7 @@ auth_blueprint = Blueprint("auth", __name__)
@auth_blueprint.route("/register", methods=["POST"]) @auth_blueprint.route("/register", methods=["POST"])
@inject @inject
def register(auth_controller: AuthController = Provide[Container.auth_controller]): def register(auth_controller: AuthController = Provide[Container.auth_controller]):
print(auth_controller.test(), file=sys.stderr)
return auth_controller.register() return auth_controller.register()

View File

@ -18,3 +18,12 @@ class AuthController:
"data": users, "data": users,
} }
return jsonify(response) return jsonify(response)
def register(self):
return jsonify({"message": "register"})
def logout(self):
return jsonify({"message": "logout"})
def test(self):
return "test"

View File

@ -9,18 +9,12 @@ class Container(containers.DeclarativeContainer):
"""Dependency Injection Container""" """Dependency Injection Container"""
mongo = providers.Dependency() mongo = providers.Dependency()
# repository
user_repository = providers.Factory(UserRepository, mongo.provided.db)
user_repository = providers.Factory( # services
UserRepository, auth_service = providers.Factory(AuthService, user_repository)
mongo.provided.db, user_service = providers.Factory(UserService, user_repository)
)
auth_service = providers.Factory( # controllers
AuthService, auth_controller = providers.Factory(AuthController, auth_service, user_service)
user_repository,
)
auth_controller = providers.Factory(
AuthController,
AuthService,
)

View File

@ -17,6 +17,8 @@ def createApp() -> Flask:
if mongo is not None: if mongo is not None:
container.mongo.override(mongo) container.mongo.override(mongo)
container.wire(modules=["blueprints.auth"])
# 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")

View File

@ -2,8 +2,8 @@ from repositories import UserRepository
class UserService: class UserService:
def __init__(self): def __init__(self, user_repository: UserRepository):
self.user_repository = UserRepository() self.user_repository = user_repository
def get_all_users(self): def get_all_users(self):
return self.user_repository.get_all_users() return self.user_repository.get_all_users()