diff --git a/backend/routers/songs.py b/backend/routers/songs.py index b995b47..69c6026 100644 --- a/backend/routers/songs.py +++ b/backend/routers/songs.py @@ -54,7 +54,15 @@ def read_songs( @router.get("/{slug}", response_model=SongReadWithStats) def read_song(slug: str, session: Session = Depends(get_session)): - song = session.exec(select(Song).where(Song.slug == slug)).first() + from sqlalchemy.orm import joinedload + song = session.exec( + select(Song) + .where(Song.slug == slug) + .options( + joinedload(Song.artist), + joinedload(Song.vertical) + ) + ).first() if not song: raise HTTPException(status_code=404, detail="Song not found") diff --git a/backend/schemas.py b/backend/schemas.py index 43ea784..1799693 100644 --- a/backend/schemas.py +++ b/backend/schemas.py @@ -83,6 +83,8 @@ class SongRead(SongBase): id: int slug: Optional[str] = None tags: List["TagRead"] = [] + artist: Optional["ArtistRead"] = None + vertical: Optional["VerticalSimple"] = None diff --git a/frontend/app/songs/[slug]/page.tsx b/frontend/app/songs/[slug]/page.tsx index 7523346..7308d17 100644 --- a/frontend/app/songs/[slug]/page.tsx +++ b/frontend/app/songs/[slug]/page.tsx @@ -73,14 +73,17 @@ export default async function SongDetailPage({ params }: { params: Promise<{ slu