from fastapi import APIRouter, HTTPException, Depends, Query import src.messages as messages import src.models as models from src.database import get_session from sqlmodel import Session import src.shipments.service as service from src.auth.auth import get_current_user router = APIRouter(prefix='/shipments') @router.get('', response_model=list[models.ShipmentPublic], ) def get_shipments( session: Session = Depends(get_session), user: models.User = Depends(get_current_user), names: list[str] = Query([]), dates: list[str] = Query([]), forms: list[str] = Query([]), ): return service.get_all( session, user, names, dates, forms, ) @router.get('/{id}', response_model=models.ShipmentPublic) def get_shipment( id: int, user: models.User = Depends(get_current_user), session: Session = Depends(get_session) ): result = service.get_one(session, id) if result is None: raise HTTPException(status_code=404, detail=messages.notfound) return result @router.post('', response_model=models.ShipmentPublic) def create_shipment( shipment: models.ShipmentCreate, user: models.User = Depends(get_current_user), session: Session = Depends(get_session) ): return service.create_one(session, shipment) @router.put('/{id}', response_model=models.ShipmentPublic) def update_shipment( id: int, shipment: models.ShipmentUpdate, user: models.User = Depends(get_current_user), session: Session = Depends(get_session) ): result = service.update_one(session, id, shipment) if result is None: raise HTTPException(status_code=404, detail=messages.notfound) return result @router.delete('/{id}', response_model=models.ShipmentPublic) def delete_shipment( id: int, user: models.User = Depends(get_current_user), session: Session = Depends(get_session) ): result = service.delete_one(session, id) if result is None: raise HTTPException(status_code=404, detail=messages.notfound) return result