from datetime import date from typing import List, Optional from pydantic import BaseModel # Shared properties class DirectorBase(BaseModel): name: str birth_date: Optional[date] = None bio: Optional[str] = None photo_path: Optional[str] = None # Properties to receive on director creation class DirectorCreate(DirectorBase): pass # Properties to receive on director update class DirectorUpdate(DirectorBase): name: Optional[str] = None # Properties shared by models stored in DB class DirectorInDBBase(DirectorBase): id: int class Config: from_attributes = True # Properties to return to client class Director(DirectorInDBBase): pass # Properties properties stored in DB class DirectorInDB(DirectorInDBBase): pass # Properties for director with details class DirectorDetails(Director): movies: List["MovieSummary"] = [] # We need a simplified movie class to avoid circular import issues class MovieSummary(BaseModel): id: int title: str release_date: Optional[date] = None poster_path: Optional[str] = None rating: Optional[float] = None class Config: from_attributes = True # Update forward references DirectorDetails.model_rebuild() # Properties for list class DirectorList(BaseModel): data: List[Director] total: int