from pydantic import BaseModel, Field from typing import Optional from datetime import datetime import uuid class MovieBase(BaseModel): title: str = Field(..., description="Movie title") description: Optional[str] = Field(None, description="Movie description") release_year: int = Field(..., description="Movie release year") runtime: Optional[int] = Field(None, description="Movie runtime in minutes") rating: Optional[int] = Field(None, description="Movie rating") director_id: uuid.UUID = Field(..., description="ID of the movie director") class MovieCreate(MovieBase): pass class MovieUpdate(MovieBase): title: Optional[str] = Field(None, description="Movie title") description: Optional[str] = Field(None, description="Movie description") release_year: Optional[int] = Field(None, description="Movie release year") runtime: Optional[int] = Field(None, description="Movie runtime in minutes") rating: Optional[int] = Field(None, description="Movie rating") director_id: Optional[uuid.UUID] = Field(None, description="ID of the movie director") class MovieSchema(MovieBase): id: uuid.UUID created_at: datetime updated_at: datetime class Config: orm_mode = True