64 lines
1.5 KiB
Python
64 lines
1.5 KiB
Python
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 |