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"]} )