feat: add GET /shows/by-episode/{episode_number} endpoint

Allows looking up shows by episode number instead of internal DB ID,
enabling IRC bot commands like !playlist 530 to resolve directly.

Made-with: Cursor
This commit is contained in:
cottongin
2026-03-12 02:33:42 -04:00
parent b529edecc3
commit 1d08580a45
6 changed files with 99 additions and 2 deletions

View File

@@ -239,6 +239,24 @@ class Database:
for row in rows
]
def get_show_by_episode_number(self, episode_number: int) -> Show | None:
conn = self._connect()
row = conn.execute(
"SELECT id, week_start, week_end, created_at, episode_number "
"FROM shows WHERE episode_number = ? LIMIT 1",
(episode_number,),
).fetchone()
conn.close()
if row is None:
return None
return Show(
id=row["id"],
week_start=datetime.fromisoformat(row["week_start"]),
week_end=datetime.fromisoformat(row["week_end"]),
created_at=datetime.fromisoformat(row["created_at"]),
episode_number=row["episode_number"],
)
def get_latest_episode_number(self) -> int | None:
conn = self._connect()
row = conn.execute(