from fastapi import Depends from fastapi import Header from sqlalchemy.ext.asyncio import AsyncSession from app.db.session import get_db_session from app.models.entities import User from app.services.export_service import ExportService from app.services.auth_service import AuthService from app.services.backend_service import BackendService from app.services.directory_service import DirectoryService from app.services.file_service import FileService from app.services.job_service import JobService from app.services.policy_service import PolicyService from app.services.repair_service import RepairService from app.services.upload_service import UploadService async def get_directory_service( session: AsyncSession = Depends(get_db_session), ) -> DirectoryService: return DirectoryService(session) async def get_file_service( session: AsyncSession = Depends(get_db_session), ) -> FileService: return FileService(session) async def get_upload_service( session: AsyncSession = Depends(get_db_session), ) -> UploadService: return UploadService(session) async def get_backend_service( session: AsyncSession = Depends(get_db_session), ) -> BackendService: return BackendService(session) async def get_job_service( session: AsyncSession = Depends(get_db_session), ) -> JobService: return JobService(session) async def get_export_service( session: AsyncSession = Depends(get_db_session), ) -> ExportService: return ExportService(session) async def get_repair_service( session: AsyncSession = Depends(get_db_session), ) -> RepairService: return RepairService(session) async def get_auth_service( session: AsyncSession = Depends(get_db_session), ) -> AuthService: return AuthService(session) async def get_policy_service( session: AsyncSession = Depends(get_db_session), ) -> PolicyService: return PolicyService(session) async def require_current_user( authorization: str | None = Header(default=None, alias="Authorization"), service: AuthService = Depends(get_auth_service), ) -> User: return await service.get_current_user(authorization)