Files
NixReaperandClaude Sonnet 5 f1ac072794
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
Add GET /collections browse endpoint; fix embedded collection poster_path
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]>
2026-09-05 20:08:26 -05:00

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] = []