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