from __future__ import annotations from fastapi import Depends from app.application.users.use_cases.create_user import CreateUserUseCase from app.application.users.use_cases.get_user import GetUserUseCase from app.infrastructure.db.sqlalchemy.session import get_sessionmaker from app.infrastructure.db.sqlalchemy.uow import SqlAlchemyUnitOfWork from app.infrastructure.integrations.email.smtp_sender import SmtpWelcomeEmailSender def get_uow() -> SqlAlchemyUnitOfWork: return SqlAlchemyUnitOfWork(get_sessionmaker()) def get_email_sender() -> SmtpWelcomeEmailSender: return SmtpWelcomeEmailSender() def get_create_user_uc( uow: SqlAlchemyUnitOfWork = Depends(get_uow), email_sender: SmtpWelcomeEmailSender = Depends(get_email_sender), ) -> CreateUserUseCase: return CreateUserUseCase(uow=uow, welcome_email_sender=email_sender) def get_get_user_uc( uow: SqlAlchemyUnitOfWork = Depends(get_uow), ) -> GetUserUseCase: return GetUserUseCase(uow=uow)