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:
@@ -122,3 +122,23 @@ def test_admin_remove_track(client, db):
|
||||
assert resp.status_code == 200
|
||||
tracks = db.get_show_tracks(show.id)
|
||||
assert len(tracks) == 1
|
||||
|
||||
|
||||
def test_show_by_episode(client, db):
|
||||
week_start = datetime(2026, 3, 12, 2, 0, 0, tzinfo=timezone.utc)
|
||||
week_end = datetime(2026, 3, 19, 2, 0, 0, tzinfo=timezone.utc)
|
||||
show = db.get_or_create_show(week_start, week_end, episode_number=530)
|
||||
t1 = Track(1, "Song A", "Artist A", "https://soundcloud.com/a/1", None, 180000, "cc-by",
|
||||
datetime(2026, 3, 14, 1, 0, 0, tzinfo=timezone.utc), "{}")
|
||||
db.upsert_track(t1)
|
||||
db.set_show_tracks(show.id, [t1.id])
|
||||
resp = client.get("/shows/by-episode/530")
|
||||
assert resp.status_code == 200
|
||||
data = resp.json()
|
||||
assert data["episode_number"] == 530
|
||||
assert len(data["tracks"]) == 1
|
||||
|
||||
|
||||
def test_show_by_episode_not_found(client):
|
||||
resp = client.get("/shows/by-episode/999")
|
||||
assert resp.status_code == 404
|
||||
|
||||
@@ -272,6 +272,20 @@ def test_update_show_episode_number(db):
|
||||
assert show2.episode_number == 521
|
||||
|
||||
|
||||
def test_get_show_by_episode_number(db):
|
||||
week_start = datetime(2026, 1, 8, 3, 0, 0, tzinfo=timezone.utc)
|
||||
week_end = datetime(2026, 1, 15, 3, 0, 0, tzinfo=timezone.utc)
|
||||
show = db.get_or_create_show(week_start, week_end, episode_number=521)
|
||||
result = db.get_show_by_episode_number(521)
|
||||
assert result is not None
|
||||
assert result.id == show.id
|
||||
assert result.episode_number == 521
|
||||
|
||||
|
||||
def test_get_show_by_episode_number_missing(db):
|
||||
assert db.get_show_by_episode_number(999) is None
|
||||
|
||||
|
||||
def test_has_track_in_show(db):
|
||||
week_start = datetime(2026, 3, 13, 2, 0, 0, tzinfo=timezone.utc)
|
||||
week_end = datetime(2026, 3, 20, 2, 0, 0, tzinfo=timezone.utc)
|
||||
|
||||
Reference in New Issue
Block a user