53 lines
1.8 KiB
Python
53 lines
1.8 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.delivery import DeliveryEntity
|
|
from app.core.usecases.delivery_service import DeliveryService
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get("/deliveries", response_model=List[DeliveryEntity])
|
|
def read_deliveries(db: Session = Depends(get_db)):
|
|
service = DeliveryService(db)
|
|
return service.get_all_deliveries()
|
|
|
|
|
|
@router.get("/deliveries/{delivery_id}", response_model=DeliveryEntity)
|
|
def read_delivery(delivery_id: int, db: Session = Depends(get_db)):
|
|
service = DeliveryService(db)
|
|
delivery = service.get_delivery_by_id(delivery_id)
|
|
if delivery is None:
|
|
raise HTTPException(status_code=404, detail="Delivery not found")
|
|
|
|
return delivery
|
|
|
|
|
|
@router.post("/deliveries", response_model=DeliveryEntity)
|
|
def create_delivery(delivery: DeliveryEntity, db: Session = Depends(get_db)):
|
|
service = DeliveryService(db)
|
|
return service.create_delivery(delivery)
|
|
|
|
|
|
@router.put("/deliveries/{delivery_id}", response_model=DeliveryEntity)
|
|
def update_delivery(delivery_id: int, delivery: DeliveryEntity, db: Session = Depends(get_db)):
|
|
service = DeliveryService(db)
|
|
updated_delivery = service.update_delivery(delivery_id, delivery)
|
|
if updated_delivery is None:
|
|
raise HTTPException(status_code=404, detail="Delivery not found")
|
|
|
|
return updated_delivery
|
|
|
|
|
|
@router.delete("/deliveries/{delivery_id}", response_model=bool)
|
|
def delete_delivery(delivery_id: int, db: Session = Depends(get_db)):
|
|
service = DeliveryService(db)
|
|
success = service.delete_delivery(delivery_id)
|
|
if not success:
|
|
raise HTTPException(status_code=404, detail="Delivery not found")
|
|
|
|
return success
|