from typing import List from fastapi import APIRouter, HTTPException, Depends from sqlalchemy.orm import Session from app.infrastructure.database.dependencies import get_db from app.core.entities.delivery_order import DeliveryOrderEntity from app.core.usecases.delivery_order_service import DeliveryOrdersService router = APIRouter() @router.get("/delivery-orders", response_model=List[DeliveryOrderEntity]) def read_delivery_orders(db: Session = Depends(get_db)): service = DeliveryOrdersService(db) return service.get_all_delivery_orders() @router.get("/delivery-orders/{delivery_order_id}", response_model=DeliveryOrderEntity) def read_delivery_order(delivery_order_id: int, db: Session = Depends(get_db)): service = DeliveryOrdersService(db) delivery_order = service.get_delivery_order_by_id(delivery_order_id) if delivery_order is None: raise HTTPException(status_code=404, detail="Delivery order not found") return delivery_order @router.post("/delivery-orders", response_model=DeliveryOrderEntity) def create_delivery_order(delivery_order: DeliveryOrderEntity, db: Session = Depends(get_db)): service = DeliveryOrdersService(db) return service.create_delivery_order(delivery_order) @router.put("/delivery-orders/{delivery_order_id}", response_model=DeliveryOrderEntity) def update_delivery_order(delivery_order_id: int, delivery_order: DeliveryOrderEntity, db: Session = Depends(get_db)): service = DeliveryOrdersService(db) updated_delivery_order = service.update_delivery_order(delivery_order_id, delivery_order) if updated_delivery_order is None: raise HTTPException(status_code=404, detail="Delivery order not found") return updated_delivery_order @router.delete("/delivery-orders/{delivery_order_id}", response_model=bool) def delete_delivery_order(delivery_order_id: int, db: Session = Depends(get_db)): service = DeliveryOrdersService(db) success = service.delete_delivery_order(delivery_order_id) if not success: raise HTTPException(status_code=404, detail="Delivery order not found") return success