from pydantic import BaseModel from datetime import datetime from typing import Optional, List class OrderItemInput(BaseModel): product_id: int quantity: int selected_options: Optional[List[int]] = None removed_ingredients: Optional[List[int]] = None notes: Optional[str] = None class AddItemsRequest(BaseModel): items: List[OrderItemInput] class ProductNameOut(BaseModel): id: int name: str model_config = {"from_attributes": True} class OrderItemOut(BaseModel): id: int order_id: int product_id: int product: Optional[ProductNameOut] = None added_by: int quantity: int unit_price: float selected_options: Optional[str] = None removed_ingredients: Optional[str] = None notes: Optional[str] = None status: str added_at: datetime printed: bool model_config = {"from_attributes": True} class OrderCreate(BaseModel): table_id: int class PayItemsRequest(BaseModel): item_ids: List[int] class AssignWaiterRequest(BaseModel): waiter_id: int class OrderWaiterOut(BaseModel): waiter_id: int model_config = {"from_attributes": True} class OrderOut(BaseModel): id: int table_id: int opened_by: int opened_at: datetime status: str closed_at: Optional[datetime] = None closed_by: Optional[int] = None notes: Optional[str] = None items: List[OrderItemOut] = [] waiters: List[OrderWaiterOut] = [] model_config = {"from_attributes": True}