| from pydantic import BaseModel | |
| from typing import List, Optional | |
| from datetime import datetime | |
| from .dish import Dish | |
| class OrderItemBase(BaseModel): | |
| dish_id: int | |
| quantity: int = 1 | |
| remarks: Optional[str] = None | |
| class OrderItemCreate(OrderItemBase): | |
| pass | |
| class OrderItem(OrderItemBase): | |
| id: int | |
| order_id: int | |
| created_at: datetime | |
| dish: Optional[Dish] = None | |
| # Add dish_name property to ensure it's always available | |
| def dish_name(self) -> str: | |
| if self.dish: | |
| return self.dish.name | |
| return "Unknown Dish" | |
| class Config: | |
| from_attributes = True # Updated from orm_mode for Pydantic V2 | |
| class OrderBase(BaseModel): | |
| table_number: int | |
| unique_id: str | |
| class OrderCreate(OrderBase): | |
| items: List[OrderItemCreate] | |
| username: Optional[str] = None | |
| password: Optional[str] = None | |
| class OrderUpdate(BaseModel): | |
| status: str | |
| class Order(OrderBase): | |
| id: int | |
| status: str | |
| created_at: datetime | |
| updated_at: datetime | |
| items: List[OrderItem] = [] | |
| person_id: Optional[int] = None | |
| person_name: Optional[str] = None | |
| visit_count: Optional[int] = None | |
| class Config: | |
| from_attributes = True # Updated from orm_mode for Pydantic V2 | |