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.order import OrderEntity from app.core.usecases.order_service import OrderService router = APIRouter() @router.get("/orders", response_model=List[OrderEntity]) def read_orders(db: Session = Depends(get_db)): service = OrderService(db) return service.get_all_orders() @router.get("/orders/{order_id}", response_model=OrderEntity) def read_order(order_id: int, db: Session = Depends(get_db)): service = OrderService(db) order = service.get_order_by_id(order_id) if order is None: raise HTTPException(status_code=404, detail="Order not found") return order @router.post("/orders", response_model=OrderEntity) def create_order(order: OrderEntity, db: Session = Depends(get_db)): service = OrderService(db) return service.create_order(order) @router.put("/orders/{order_id}", response_model=OrderEntity) def update_order(order_id: int, order: OrderEntity, db: Session = Depends(get_db)): service = OrderService(db) updated_order = service.update_order(order_id, order) if updated_order is None: raise HTTPException(status_code=404, detail="Order not found") return updated_order @router.delete("/orders/{order_id}", response_model=bool) def delete_order(order_id: int, db: Session = Depends(get_db)): service = OrderService(db) success = service.delete_order(order_id) if not success: raise HTTPException(status_code=404, detail="Order not found") return success