feat: Semaine 8
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
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"]}
|
||||
)
|
||||
Reference in New Issue
Block a user