from pydantic import BaseModel, Field, EmailStr from datetime import datetime from typing import List, Optional from app.models.order import OrderStatus class OrderItemBase(BaseModel): book_id: int quantity: int = Field(..., gt=0) class OrderItemCreate(OrderItemBase): pass class OrderItemResponse(OrderItemBase): id: int price: float class Config: from_attributes = True class OrderBase(BaseModel): customer_email: EmailStr customer_name: str = Field(..., min_length=1, max_length=255) customer_address: str = Field(..., min_length=1) class OrderCreate(OrderBase): items: List[OrderItemCreate] class OrderResponse(OrderBase): id: int total_amount: float status: OrderStatus stripe_payment_intent_id: Optional[str] = None items: List[OrderItemResponse] created_at: datetime updated_at: Optional[datetime] = None class Config: from_attributes = True class PaymentIntentCreate(BaseModel): order_id: int