from typing import List, Optional import uuid from datetime import datetime from models import Order, Drink from websocket_manager import websocket_manager class OrderDatabase: def __init__(self): self.orders: dict[str, Order] = {} async def create_order(self, drinks: List[Drink]) -> Order: """Create a new order with the given drinks.""" order_id = str(uuid.uuid4()) order = Order( id=order_id, order_date=datetime.now(), drinks=drinks ) self.orders[order_id] = order # WebSocket-Broadcast für neue Bestellung await websocket_manager.broadcast_order_created(order.model_dump()) return order def get_all_orders(self) -> List[Order]: """Get all orders sorted by order date (oldest first).""" return sorted(self.orders.values(), key=lambda order: order.order_date) def get_order_by_id(self, order_id: str) -> Optional[Order]: """Get a specific order by ID.""" return self.orders.get(order_id) async def delete_order(self, order_id: str) -> bool: """Delete an order by ID. Returns True if successful, False if not found.""" if order_id in self.orders: del self.orders[order_id] # WebSocket-Broadcast für gelöschte Bestellung await websocket_manager.broadcast_order_deleted(order_id) return True return False # Global database instance db = OrderDatabase()