53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
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
|