"""Series/season/episode response schemas.""" from __future__ import annotations from datetime import date, datetime from pydantic import BaseModel from app.schemas.common import ( CastCreditOut, CompanyBriefOut, CrewCreditOut, GenreOut, ImagesOut, KeywordOut, VideoOut, ) class SeriesSummaryOut(BaseModel): id: str type: str = "series" title: str original_title: str | None = None overview: str | None = None first_air_date: date | None = None poster_path: str | None = None popularity: float | None = None vote_average: float | None = None class SeasonBriefOut(BaseModel): id: str season_number: int title: str | None = None episode_count: int | None = None air_date: date | None = None poster_path: str | None = None class SeriesDetailOut(BaseModel): id: str type: str = "series" title: str original_title: str | None = None overview: str | None = None tagline: str | None = None status: str original_language: str | None = None first_air_date: date | None = None last_air_date: date | None = None number_of_seasons: int | None = None number_of_episodes: int | None = None popularity: float | None = None vote_average: float | None = None vote_count: int | None = None genres: list[GenreOut] = [] keywords: list[KeywordOut] = [] creators: list[CrewCreditOut] = [] cast: list[CastCreditOut] = [] crew: list[CrewCreditOut] = [] networks: list[CompanyBriefOut] = [] companies: list[CompanyBriefOut] = [] seasons: list[SeasonBriefOut] = [] images: ImagesOut = ImagesOut() videos: list[VideoOut] = [] external_ids: dict[str, str] = {} created_at: datetime updated_at: datetime class SeriesSeasonsOut(BaseModel): id: str seasons: list[SeasonBriefOut] = [] class SeriesCreditsOut(BaseModel): id: str cast: list[CastCreditOut] = [] crew: list[CrewCreditOut] = [] creators: list[CrewCreditOut] = [] class SeriesImagesOut(BaseModel): id: str images: ImagesOut = ImagesOut() class SeriesVideosOut(BaseModel): id: str videos: list[VideoOut] = [] class SeriesListOut(BaseModel): page: int page_size: int total_results: int total_pages: int results: list[SeriesSummaryOut] = [] class EpisodeBriefOut(BaseModel): id: str episode_number: int title: str | None = None air_date: date | None = None still_path: str | None = None class SeasonDetailOut(BaseModel): id: str type: str = "season" series_id: str season_number: int title: str | None = None overview: str | None = None air_date: date | None = None episode_count: int | None = None episodes: list[EpisodeBriefOut] = [] images: ImagesOut = ImagesOut() external_ids: dict[str, str] = {} created_at: datetime updated_at: datetime class EpisodeDetailOut(BaseModel): id: str type: str = "episode" series_id: str season_id: str season_number: int episode_number: int title: str | None = None overview: str | None = None air_date: date | None = None runtime: int | None = None cast: list[CastCreditOut] = [] guest_stars: list[CastCreditOut] = [] crew: list[CrewCreditOut] = [] images: ImagesOut = ImagesOut() external_ids: dict[str, str] = {} created_at: datetime updated_at: datetime