added restful api
This commit is contained in:
commit
4e359cf3ef
7 changed files with 530 additions and 0 deletions
62
backend/main.py
Normal file
62
backend/main.py
Normal file
|
@ -0,0 +1,62 @@
|
|||
from fastapi import FastAPI, HTTPException
|
||||
from typing import List
|
||||
from models import CreateOrderRequest, Order, DrinkType, MateType
|
||||
from database import db
|
||||
|
||||
app = FastAPI(
|
||||
title="Tschunk Order API",
|
||||
description="Eine RESTful API für Tschunk-Bestellungen",
|
||||
version="1.0.0"
|
||||
)
|
||||
|
||||
@app.post("/orders", response_model=Order, status_code=201)
|
||||
async def create_order(order_request: CreateOrderRequest):
|
||||
"""
|
||||
Erstellt eine neue Bestellung.
|
||||
|
||||
- **drinks**: Liste der Getränke mit Typ und Mate-Sorte
|
||||
"""
|
||||
if not order_request.drinks:
|
||||
raise HTTPException(status_code=400, detail="Mindestens ein Getränk muss bestellt werden")
|
||||
|
||||
order = db.create_order(order_request.drinks)
|
||||
return order
|
||||
|
||||
|
||||
@app.get("/orders", response_model=List[Order])
|
||||
async def get_all_orders():
|
||||
"""
|
||||
Gibt alle Bestellungen zurück.
|
||||
"""
|
||||
orders = db.get_all_orders()
|
||||
return orders
|
||||
|
||||
|
||||
@app.delete("/orders/{order_id}")
|
||||
async def delete_order(order_id: str):
|
||||
"""
|
||||
Löscht eine spezifische Bestellung.
|
||||
|
||||
- **order_id**: ID der zu löschenden Bestellung
|
||||
"""
|
||||
success = db.delete_order(order_id)
|
||||
if not success:
|
||||
raise HTTPException(status_code=404, detail="Bestellung nicht gefunden")
|
||||
|
||||
return {"message": f"Bestellung {order_id} wurde erfolgreich gelöscht"}
|
||||
|
||||
|
||||
@app.get("/drinks")
|
||||
async def get_available_drinks():
|
||||
"""
|
||||
Gibt alle verfügbaren Getränketypen zurück.
|
||||
"""
|
||||
return {
|
||||
"drink_types": [drink.value for drink in DrinkType],
|
||||
"mate_types": [mate.value for mate in MateType]
|
||||
}
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import uvicorn
|
||||
uvicorn.run(app, host="0.0.0.0", port=8000)
|
Loading…
Add table
Add a link
Reference in a new issue