from typing import Annotated from fastapi import APIRouter, Depends from sqlalchemy.ext.asyncio import AsyncSession from backend.session import get_session from schemas.status import * from services.auth import guest_user, authorized_user from services.status import StatusService status_router = APIRouter( prefix="/status", tags=["status"], dependencies=[Depends(guest_user)] ) @status_router.post( '/', response_model=CreateStatusResponse, operation_id="create_status", dependencies=[Depends(authorized_user)] ) async def create_status( session: Annotated[AsyncSession, Depends(get_session)], request: CreateStatusRequest, ): return await StatusService(session).create_status(request) @status_router.patch( '/', response_model=UpdateStatusResponse, operation_id="update_status", dependencies=[Depends(authorized_user)] ) async def update_status( session: Annotated[AsyncSession, Depends(get_session)], request: UpdateStatusRequest, ): return await StatusService(session).update_status(request) @status_router.patch( '/order', response_model=UpdateStatusOrderResponse, operation_id="update_status_order", dependencies=[Depends(authorized_user)] ) async def update_status_order( session: Annotated[AsyncSession, Depends(get_session)], request: UpdateStatusOrderRequest, ): return await StatusService(session).update_status_order(request) @status_router.delete( '/{status_id}', response_model=DeleteStatusResponse, operation_id="delete_status", dependencies=[Depends(authorized_user)] ) async def delete_status( session: Annotated[AsyncSession, Depends(get_session)], status_id: int, ): return await StatusService(session).delete_status(status_id)