from typing import Annotated from fastapi import APIRouter, Depends from sqlalchemy.ext.asyncio import AsyncSession import enums.service from backend.dependecies import SessionDependency from backend.session import get_session from schemas.base import BaseEnumSchema, BaseEnumListSchema from schemas.service import * from services.auth import get_current_user from services.service import ServiceService service_router = APIRouter( prefix="/service", tags=['service'], dependencies=[Depends(get_current_user)] ) @service_router.get( '/get-all', response_model=ServiceGetAllResponse, operation_id="get_all_services" ) async def get_all( session: Annotated[AsyncSession, Depends(get_session)] ): return await ServiceService(session).get_all() @service_router.post( '/create', response_model=ServiceCreateResponse, operation_id="create_service" ) async def create( session: Annotated[AsyncSession, Depends(get_session)], request: ServiceCreateRequest ): return await ServiceService(session).create(request) @service_router.post( '/update', response_model=ServiceUpdateResponse, operation_id="update_service" ) async def update( session: Annotated[AsyncSession, Depends(get_session)], request: ServiceUpdateRequest ): return await ServiceService(session).update(request) @service_router.post( '/delete', response_model=ServiceDeleteResponse, operation_id="delete_service" ) async def delete( session: Annotated[AsyncSession, Depends(get_session)], request: ServiceDeleteRequest ): return await ServiceService(session).delete(request) @service_router.get( '/categories/get-all', response_model=ServiceGetAllCategoriesResponse, operation_id="get_all_service_categories" ) async def get_all_categories( session: Annotated[AsyncSession, Depends(get_session)] ): return await ServiceService(session).get_all_categories() @service_router.post( '/categories/create', response_model=ServiceCreateCategoryResponse, operation_id="create_service_category" ) async def create_category( session: Annotated[AsyncSession, Depends(get_session)], request: ServiceCreateCategoryRequest ): return await ServiceService(session).create_category(request) @service_router.get( '/types/get-all', response_model=BaseEnumListSchema, operation_id="get_all_service_types" ) async def get_all_service_types( ): result = [] for key, value in enums.service.SERVICE_TYPE_LABELS.items(): result.append({"id": key, "name": value}) return BaseEnumListSchema(items=result) @service_router.get( '/kits/get-all', response_model=GetAllServicesKitsResponse, operation_id='get_all_services_kits' ) async def get_all_services_kits( session: SessionDependency ): return await ServiceService(session).get_all_kits() @service_router.post( '/kits/create', response_model=CreateServicesKitResponse, operation_id='create_services_kit' ) async def create_services_kit( session: SessionDependency, request: CreateServicesKitRequest ): return await ServiceService(session).create_kit(request) @service_router.post( '/kits/update', response_model=UpdateServicesKitResponse, operation_id='update_services_kit' ) async def update_services_kit( session: SessionDependency, request: UpdateServicesKitRequest ): return await ServiceService(session).update_kit(request)