from fastapi import Depends from src.application.abstractions import IUnitOfWork from src.application.commands import ( UserRegistrationCompleteCommand, JwtRefreshCommand, UserRegistrationStartCommand, UserLogoutCommand, UserLoginCompleteCommand, UserLoginStartCommand ) from src.application.contracts import IHashService, IJwtService, ILogger, IQueueMessanger from src.application.contracts import ICache from src.presentation.dependencies.queue_messanger import get_rabbit from src.presentation.dependencies.cache import get_cache from src.presentation.dependencies.logger import get_logger from src.presentation.dependencies.security import get_hash_service, get_jwt_service from src.presentation.dependencies.unit_of_work import get_unit_of_work def get_user_registration_start_command( logger: ILogger = Depends(get_logger), hash_service: IHashService = Depends(get_hash_service), cache: ICache = Depends(get_cache), unit_of_work: IUnitOfWork = Depends(get_unit_of_work), messanger: IQueueMessanger = Depends(get_rabbit), ) -> UserRegistrationStartCommand: return UserRegistrationStartCommand( logger=logger, unit_of_work=unit_of_work, hash_service=hash_service, cache=cache, messanger=messanger, ) def get_user_registration_complete_command( uow: IUnitOfWork = Depends(get_unit_of_work), logger: ILogger = Depends(get_logger), hash_service: IHashService = Depends(get_hash_service), jwt_service: IJwtService = Depends(get_jwt_service), cache: ICache = Depends(get_cache), ) -> UserRegistrationCompleteCommand: return UserRegistrationCompleteCommand( unit_of_work=uow, logger=logger, hash_service=hash_service, jwt_service=jwt_service, cache=cache ) def get_user_login_start_command( logger: ILogger = Depends(get_logger), hash_service: IHashService = Depends(get_hash_service), cache: ICache = Depends(get_cache), unit_of_work: IUnitOfWork = Depends(get_unit_of_work), messanger: IQueueMessanger = Depends(get_rabbit), ) -> UserLoginStartCommand: return UserLoginStartCommand( logger=logger, unit_of_work=unit_of_work, hash_service=hash_service, cache=cache, messanger=messanger, ) def get_user_login_complete_command( uow: IUnitOfWork = Depends(get_unit_of_work), logger: ILogger = Depends(get_logger), hash_service: IHashService = Depends(get_hash_service), jwt_service: IJwtService = Depends(get_jwt_service), cache: ICache = Depends(get_cache), ) -> UserLoginCompleteCommand: return UserLoginCompleteCommand( unit_of_work=uow, logger=logger, hash_service=hash_service, jwt_service=jwt_service, cache=cache ) def get_user_logout_command( uow: IUnitOfWork = Depends(get_unit_of_work), jwt_service: IJwtService = Depends(get_jwt_service), logger: ILogger = Depends(get_logger), ) -> UserLogoutCommand: return UserLogoutCommand(unit_of_work=uow, logger=logger, jwt_service=jwt_service) def get_jwt_refresh_command( uow: IUnitOfWork = Depends(get_unit_of_work), hash_service: IHashService = Depends(get_hash_service), jwt_service: IJwtService = Depends(get_jwt_service), cache: ICache = Depends(get_cache), logger: ILogger = Depends(get_logger), ) -> JwtRefreshCommand: return JwtRefreshCommand(uow, hash_service, jwt_service, cache, logger)