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
Completes browse/discover across all five entity types: movies, series, people, companies, and now collections. No filter (no categorical field like company_type exists for a collection) -- just page/page_size, always alphabetical by name. While adding poster_path to CollectionBriefOut for the browse listing, found the same class of bug fixed earlier for company logo_path: movie_service's embedded `collection` field never looked up its poster artwork either, so it stayed null even after ingest_collection populated one. Fixed alongside since it's the same schema field this feature was already touching. Also removed PageMeta from schemas/common.py -- scaffolding from early spec work that was never actually wired into any endpoint; all five browse endpoints shipped this session use a flat page/page_size/ total_results/total_pages shape instead. Co-Authored-By: Claude Sonnet 5 <[email protected]>
34 lines
772 B
Python
34 lines
772 B
Python
"""Collection/franchise response schemas."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from app.schemas.common import CollectionBriefOut
|
|
from app.schemas.movie import MovieSummaryOut
|
|
from app.schemas.tv import SeriesSummaryOut
|
|
|
|
|
|
class CollectionDetailOut(BaseModel):
|
|
id: str
|
|
type: str = "collection"
|
|
name: str
|
|
overview: str | None = None
|
|
poster_path: str | None = None
|
|
backdrop_path: str | None = None
|
|
movies: list[MovieSummaryOut] = []
|
|
series: list[SeriesSummaryOut] = []
|
|
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
|
|
class CollectionListOut(BaseModel):
|
|
page: int
|
|
page_size: int
|
|
total_results: int
|
|
total_pages: int
|
|
results: list[CollectionBriefOut] = []
|