from typing import Optional from datetime import datetime, date from pydantic import BaseModel, EmailStr # Shared properties class CustomerBase(BaseModel): first_name: str last_name: str email: EmailStr phone_number: Optional[str] = None address: Optional[str] = None date_of_birth: Optional[date] = None # Properties to receive via API on creation class CustomerCreate(CustomerBase): pass # Properties to receive via API on update class CustomerUpdate(CustomerBase): first_name: Optional[str] = None last_name: Optional[str] = None email: Optional[EmailStr] = None # Properties shared by models stored in DB class CustomerInDBBase(CustomerBase): id: int created_at: datetime updated_at: Optional[datetime] = None class Config: from_attributes = True # Additional properties to return via API class Customer(CustomerInDBBase): pass # Additional properties stored in DB class CustomerInDB(CustomerInDBBase): pass