from fastapi import FastAPI from sqlalchemy.ext.asyncio import AsyncEngine, AsyncSession, async_sessionmaker from api.application.abstractions.uow import UnitOfWork from api.application.protocols.password_hasher import PasswordHasher from api.application.usecase.user.create_user import CreateUser from api.domain.user.repository import UserRepository from api.infrastructure.dependencies.adapters import ( create_engine, create_session_maker, new_session, new_unit_of_work, ) from api.infrastructure.dependencies.configs import app_settings from api.infrastructure.dependencies.protocols import get_password_hasher from api.infrastructure.dependencies.repositories import get_user_repository from api.infrastructure.dependencies.usecases import provide_create_user from api.infrastructure.settings import Settings def init_dependencies(app: FastAPI) -> None: app.dependency_overrides[Settings] = app_settings app.dependency_overrides[AsyncEngine] = create_engine app.dependency_overrides[async_sessionmaker[AsyncSession]] = create_session_maker app.dependency_overrides[AsyncSession] = new_session app.dependency_overrides[UnitOfWork] = new_unit_of_work app.dependency_overrides[PasswordHasher] = get_password_hasher app.dependency_overrides[UserRepository] = get_user_repository app.dependency_overrides[CreateUser] = provide_create_user