added frontend

This commit is contained in:
Jan Felix Wiebe 2025-07-10 22:28:17 +02:00
parent fca4f99675
commit b5fb4a8888
35 changed files with 7405 additions and 20 deletions

View file

@ -3,6 +3,7 @@ from typing import List
from models import CreateOrderRequest, Order, DrinkType, MateType
from database import db
from websocket_manager import websocket_manager
import json
app = FastAPI(
title="Tschunk Order API",
@ -10,22 +11,8 @@ app = FastAPI(
version="1.0.0"
)
@app.get("/")
async def root():
"""Root endpoint with API information."""
return {
"message": "Willkommen zur Tschunk Order API!",
"version": "1.0.0",
"endpoints": {
"POST /orders": "Neue Bestellung erstellen",
"GET /orders": "Alle Bestellungen abrufen",
"DELETE /orders/{order_id}": "Bestellung löschen",
"WS /ws": "WebSocket für Echtzeit-Updates"
},
"available_drinks": [drink.value for drink in DrinkType],
"available_mate_types": [mate.value for mate in MateType]
}
# Datenbank-Referenz im WebSocketManager setzen
websocket_manager.set_database(db)
@app.websocket("/ws")
@ -41,6 +28,9 @@ async def websocket_endpoint(websocket: WebSocket):
- order_created: {"type": "order_created", "order": {...}}
- order_deleted: {"type": "order_deleted", "order_id": "..."}
- all_orders: {"type": "all_orders", "orders": [...]}
- create_order: {"type": "create_order", "drinks": [...]}
- get_all_orders: {"type": "get_all_orders"}
- delete_order: {"type": "delete_order", "order_id": "..."}
"""
await websocket_manager.connect(websocket)
@ -51,12 +41,31 @@ async def websocket_endpoint(websocket: WebSocket):
# Halte die Verbindung aufrecht und warte auf Nachrichten
while True:
# Warte auf Nachrichten vom Client (kann für Pings/Pongs verwendet werden)
# Warte auf Nachrichten vom Client
data = await websocket.receive_text()
# Optional: Echo für Pings
if data == "ping":
await websocket.send_text("pong")
try:
# Versuche JSON zu parsen
message = json.loads(data)
message_type = message.get("type")
if message_type == "ping":
await websocket.send_text("pong")
elif message_type == "create_order":
await websocket_manager.handle_create_order(websocket, message)
elif message_type == "get_all_orders":
await websocket_manager.handle_get_all_orders(websocket)
elif message_type == "delete_order":
await websocket_manager.handle_delete_order(websocket, message)
else:
print(f"Unbekannte Nachrichtenart: {message_type}")
except json.JSONDecodeError:
# Fallback für einfache Textnachrichten (z.B. "ping")
if data == "ping":
await websocket.send_text("pong")
else:
print(f"Ungültige JSON-Nachricht: {data}")
except WebSocketDisconnect:
websocket_manager.disconnect(websocket)