"""Movie response schemas.""" from __future__ import annotations from datetime import date, datetime from pydantic import BaseModel from app.schemas.common import ( CastCreditOut, CollectionBriefOut, CompanyBriefOut, CrewCreditOut, GenreOut, ImagesOut, KeywordOut, VideoOut, ) class MovieSummaryOut(BaseModel): """Compact movie representation used in lists and search results.""" id: str type: str = "movie" title: str original_title: str | None = None overview: str | None = None release_date: date | None = None poster_path: str | None = None popularity: float | None = None vote_average: float | None = None class MovieDetailOut(BaseModel): id: str type: str = "movie" title: str original_title: str | None = None overview: str | None = None tagline: str | None = None status: str original_language: str | None = None release_date: date | None = None runtime: int | None = None budget: int | None = None revenue: int | None = None popularity: float | None = None vote_average: float | None = None vote_count: int | None = None adult: bool = False genres: list[GenreOut] = [] keywords: list[KeywordOut] = [] cast: list[CastCreditOut] = [] crew: list[CrewCreditOut] = [] companies: list[CompanyBriefOut] = [] collection: CollectionBriefOut | None = None images: ImagesOut = ImagesOut() videos: list[VideoOut] = [] external_ids: dict[str, str] = {} created_at: datetime updated_at: datetime class MovieCreditsOut(BaseModel): id: str cast: list[CastCreditOut] = [] crew: list[CrewCreditOut] = [] class MovieImagesOut(BaseModel): id: str images: ImagesOut = ImagesOut() class MovieVideosOut(BaseModel): id: str videos: list[VideoOut] = [] class MovieRecommendationsOut(BaseModel): id: str recommendations: list[MovieSummaryOut] = []