Builds on the accounts foundation: PUT/DELETE a rating (0.5-10.0) or a
watchlist entry on any movie or series, all scoped to the bearer token's
own user, plus GET /account/ratings|watchlist/{movies,series} to list
them back. Both are polymorphic entity_type/entity_id tables, same shape
as watch_provider_offerings and trending_entries, so movie and series
share one repository/router each rather than duplicating per type.
Co-Authored-By: Claude Sonnet 5 <[email protected]>
87 lines
2.3 KiB
Python
87 lines
2.3 KiB
Python
"""SQLAlchemy models.
|
|
|
|
Import every model module here so `Base.metadata` is fully populated for
|
|
Alembic autogeneration and `Base.metadata.create_all()` (used only in
|
|
tests) regardless of which module happens to trigger the import first.
|
|
"""
|
|
|
|
from app.models.artwork import Artwork
|
|
from app.models.base import Base
|
|
from app.models.collection import Collection, CollectionMovie, CollectionRelation, CollectionSeries
|
|
from app.models.company import Company, MovieCompany, SeriesCompany
|
|
from app.models.credit import Credit
|
|
from app.models.external_id import ExternalID
|
|
from app.models.genre import Genre, MovieGenre, SeriesGenre
|
|
from app.models.keyword import Keyword, MovieKeyword, SeriesKeyword
|
|
from app.models.language_country import Certification, Country, Language
|
|
from app.models.movie import (
|
|
Movie,
|
|
MovieAlternateTitle,
|
|
MovieProductionCountry,
|
|
MovieRecommendation,
|
|
MovieSpokenLanguage,
|
|
ReleaseDate,
|
|
)
|
|
from app.models.person import Person
|
|
from app.models.provider import IngestionJob, Provider, ProviderRecord
|
|
from app.models.rating import Rating
|
|
from app.models.trending import TrendingEntry
|
|
from app.models.tv import (
|
|
Episode,
|
|
Season,
|
|
Series,
|
|
SeriesAlternateTitle,
|
|
SeriesProductionCountry,
|
|
SeriesSpokenLanguage,
|
|
)
|
|
from app.models.user import User
|
|
from app.models.video import Video
|
|
from app.models.watch_provider import WatchProvider, WatchProviderOffering
|
|
from app.models.watchlist import WatchlistEntry
|
|
|
|
__all__ = [
|
|
"Base",
|
|
"Artwork",
|
|
"Collection",
|
|
"CollectionMovie",
|
|
"CollectionSeries",
|
|
"CollectionRelation",
|
|
"Company",
|
|
"MovieCompany",
|
|
"SeriesCompany",
|
|
"Credit",
|
|
"ExternalID",
|
|
"Genre",
|
|
"MovieGenre",
|
|
"SeriesGenre",
|
|
"Keyword",
|
|
"MovieKeyword",
|
|
"SeriesKeyword",
|
|
"Language",
|
|
"Country",
|
|
"Certification",
|
|
"Movie",
|
|
"MovieAlternateTitle",
|
|
"MovieSpokenLanguage",
|
|
"MovieProductionCountry",
|
|
"ReleaseDate",
|
|
"MovieRecommendation",
|
|
"Person",
|
|
"Provider",
|
|
"ProviderRecord",
|
|
"IngestionJob",
|
|
"Series",
|
|
"SeriesAlternateTitle",
|
|
"SeriesSpokenLanguage",
|
|
"SeriesProductionCountry",
|
|
"Season",
|
|
"Episode",
|
|
"Video",
|
|
"WatchProvider",
|
|
"WatchProviderOffering",
|
|
"TrendingEntry",
|
|
"User",
|
|
"Rating",
|
|
"WatchlistEntry",
|
|
]
|