from fastapi import APIRouter, Depends from backend.dependecies import SessionDependency from schemas.department import * from services.auth import authorized_user from services.department import DepartmentService department_router = APIRouter( prefix="/department", tags=["department"], dependencies=[Depends(authorized_user)] ) @department_router.get( "/", operation_id="get_departments", response_model=GetDepartmentsResponse, ) async def get_departments( session: SessionDependency, ): return await DepartmentService(session).get_departments() @department_router.post( "/", operation_id="create_department", response_model=CreateDepartmentResponse, ) async def create_department( session: SessionDependency, request: CreateDepartmentRequest, ): return await DepartmentService(session).create_department(request) @department_router.patch( "/", operation_id="update_department", response_model=UpdateDepartmentResponse, ) async def update_department( session: SessionDependency, request: UpdateDepartmentRequest, ): return await DepartmentService(session).update_department(request) @department_router.delete( "/{department_id}", operation_id="delete_department", response_model=DeleteDepartmentResponse, ) async def delete_department( session: SessionDependency, department_id: int, ): return await DepartmentService(session).delete_department(department_id) @department_router.post( "/section", operation_id="create_section", response_model=CreateDepartmentSectionResponse, ) async def create_section( session: SessionDependency, request: CreateDepartmentSectionRequest, ): return await DepartmentService(session).create_department_section(request) @department_router.patch( "/section", operation_id="update_section", response_model=UpdateDepartmentSectionResponse, ) async def update_section( session: SessionDependency, request: UpdateDepartmentSectionRequest, ): return await DepartmentService(session).update_department_section(request) @department_router.delete( "/section/{section_id}", operation_id="delete_section", response_model=DeleteDepartmentSectionResponse, ) async def delete_section( session: SessionDependency, section_id: int, ): return await DepartmentService(session).delete_department_section(section_id) @department_router.get( "/users/{section_id}", operation_id="get_available_users_for_section", response_model=GetAvailableUsersForDepartmentSectionResponse, ) async def get_available_users_for_department_section( session: SessionDependency, section_id: int, ): return await DepartmentService(session).get_available_users_for_section(section_id) @department_router.post( "/users", operation_id="add_user", response_model=AddUserResponse, ) async def add_user( session: SessionDependency, request: AddUserRequest, ): return await DepartmentService(session).add_user(request) @department_router.post( "/users/delete", operation_id="delete_user", response_model=DeleteUserResponse, ) async def delete_user( session: SessionDependency, request: DeleteUserRequest, ): return await DepartmentService(session).delete_user(request)