CI / lint (push) Canceled after 0s
CI / typecheck (push) Canceled after 0s
CI / unit-tests (push) Canceled after 0s
CI / integration-tests (push) Canceled after 0s
CI / container-build (push) Canceled after 0s
CI / dependency-audit (push) Canceled after 0s
FilmographyCreditOut already aggregated a guest star's episode appearances into one row per series with an episode_count, but never exposed which episodes those were even though the individual episode Credit rows exist in the database. Adds an `episodes` list (season/ episode number, title, air date, sorted chronologically) alongside the existing count -- closes a known limitation tracked in docs/api.md. Co-Authored-By: Claude Sonnet 5 <[email protected]>
73 lines
1.9 KiB
Python
73 lines
1.9 KiB
Python
"""Person response schemas."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from datetime import date, datetime
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from app.schemas.common import ArtworkOut
|
|
|
|
|
|
class PersonSummaryOut(BaseModel):
|
|
id: str
|
|
type: str = "person"
|
|
name: str
|
|
known_for_department: str | None = None
|
|
profile_path: str | None = None
|
|
popularity: float | None = None
|
|
|
|
|
|
class GuestEpisodeOut(BaseModel):
|
|
id: str
|
|
season_number: int
|
|
episode_number: int
|
|
title: str | None = None
|
|
air_date: date | None = None
|
|
|
|
|
|
class FilmographyCreditOut(BaseModel):
|
|
id: str
|
|
media_id: str
|
|
media_type: str
|
|
title: str
|
|
department: str
|
|
job: str | None = None
|
|
character: str | None = None
|
|
release_date: date | None = None
|
|
poster_path: str | None = None
|
|
# Set only for series filmography built from guest-star episode credits:
|
|
# how many distinct episodes this character/credit appeared in, since
|
|
# those are aggregated to one row per series rather than one per
|
|
# episode. None for movie credits and regular (non-guest) series roles.
|
|
episode_count: int | None = None
|
|
# The individual episodes behind episode_count, sorted by (season,
|
|
# episode) -- empty for movie credits and regular (non-guest) series
|
|
# roles, same as episode_count.
|
|
episodes: list[GuestEpisodeOut] = []
|
|
|
|
|
|
class PersonDetailOut(BaseModel):
|
|
id: str
|
|
type: str = "person"
|
|
name: str
|
|
aliases: list[str] = []
|
|
biography: str | None = None
|
|
birthday: date | None = None
|
|
deathday: date | None = None
|
|
birthplace: str | None = None
|
|
gender: str | None = None
|
|
known_for_department: str | None = None
|
|
popularity: float | None = None
|
|
profile_images: list[ArtworkOut] = []
|
|
external_ids: dict[str, str] = {}
|
|
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
|
|
class PersonCreditsOut(BaseModel):
|
|
id: str
|
|
cast: list[FilmographyCreditOut] = []
|
|
crew: list[FilmographyCreditOut] = []
|