Files
gauvainboiche 3315cb2336 feat: Semaine 8
2026-05-11 09:25:19 +02:00

40 lines
1.0 KiB
Python

import sys, os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from uuid import uuid4
from fastapi import FastAPI
from fastapi.responses import JSONResponse
from pydantic import BaseModel
from producer import OrderProducer
app = FastAPI()
producer = OrderProducer()
orders_db: list[dict] = []
class OrderItem(BaseModel):
dish_id: int
name: str
price: float
class CreateOrderDto(BaseModel):
customer_id: int
restaurant_id: int
items: list[OrderItem]
@app.post("/orders")
async def place_order(payload: CreateOrderDto):
order = {
"order_id": uuid4().hex,
"customer_id": payload.customer_id,
"restaurant_id": payload.restaurant_id,
"items": [ item.model_dump() for item in payload.items ],
"total_amount": sum([ item.price for item in payload.items ])
}
producer.publish_order_created(order)
return JSONResponse(
status_code= 202,
content= {"message": "Commande acceptee", "order_id": order["order_id"]}
)