Mechanical, whole-tree `ruff format` pass — no behaviour change. Recorded in .git-blame-ignore-revs (next commit) so git blame skips it.
16 lines
638 B
Python
16 lines
638 B
Python
"""Small shared Plex row lookups, so the get-by-rating_key pattern lives in one place."""
|
|
|
|
from typing import TypeVar
|
|
|
|
from sqlalchemy import select
|
|
from sqlalchemy.orm import Session
|
|
|
|
_M = TypeVar("_M")
|
|
|
|
|
|
def by_rating_key(db: Session, model: type[_M], rating_key: str) -> _M | None:
|
|
"""The mirrored row for a Plex rating_key, or None. `model` is any of the rating_key-keyed Plex
|
|
tables (PlexItem / PlexShow / PlexSeason / PlexCollection); the return type is that model, so call
|
|
sites keep their `Model | None` static type."""
|
|
return db.execute(select(model).where(model.rating_key == str(rating_key))).scalars().first()
|