from pydantic import BaseModel, EmailStr from typing import Optional from datetime import datetime import uuid import enum class OrderStatus(str, enum.Enum): PENDING = "pending" ACCEPTED = "accepted" PREPARING = "preparing" READY = "ready" DELIVERED = "delivered" CANCELED = "canceled" class OnlineOrderBase(BaseModel): order_number: str customer_name: str customer_email: EmailStr customer_phone: str delivery_address: str total_amount: float status: OrderStatus = OrderStatus.PENDING class OnlineOrderCreate(OnlineOrderBase): pass class OnlineOrderUpdate(OnlineOrderBase): order_number: Optional[str] = None customer_name: Optional[str] = None customer_email: Optional[EmailStr] = None customer_phone: Optional[str] = None delivery_address: Optional[str] = None total_amount: Optional[float] = None status: Optional[OrderStatus] = None class OnlineOrderSchema(OnlineOrderBase): id: uuid.UUID created_at: datetime updated_at: datetime class Config: orm_mode = True class OrderItemBase(BaseModel): product_name: str product_price: float quantity: int class OrderItemCreate(OrderItemBase): pass class OrderItemUpdate(OrderItemBase): product_name: Optional[str] = None product_price: Optional[float] = None quantity: Optional[int] = None class OrderItemSchema(OrderItemBase): id: uuid.UUID order_id: uuid.UUID created_at: datetime updated_at: datetime class Config: orm_mode = True