From 7edec61af1da1b428fb6b5405286b6cefc4a5f65 Mon Sep 17 00:00:00 2001 From: fullsizemalt <106900403+fullsizemalt@users.noreply.github.com> Date: Wed, 31 Dec 2025 18:40:46 -0800 Subject: [PATCH] fix: manual population of show relationships in response --- backend/routers/shows.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/backend/routers/shows.py b/backend/routers/shows.py index a010c13..130be6c 100644 --- a/backend/routers/shows.py +++ b/backend/routers/shows.py @@ -4,7 +4,7 @@ from sqlmodel import Session, select from sqlalchemy import func from database import get_session from models import Show, Tag, EntityTag, Vertical, UserVerticalPreference -from schemas import ShowCreate, ShowRead, ShowUpdate, TagRead, PaginatedResponse, PaginationMeta +from schemas import ShowCreate, ShowRead, ShowUpdate, TagRead, PaginatedResponse, PaginationMeta, VerticalSimple, VenueRead, TourRead from auth import get_current_user, get_current_user_optional router = APIRouter(prefix="/shows", tags=["shows"]) @@ -109,8 +109,25 @@ def read_shows( shows = session.exec(query.offset(offset).limit(limit)).all() + # Manual population to ensure relationships are serialized + # (Pydantic v2/SQLModel can be tricky with ORM relationships sometimes) + response_shows = [] + for show in shows: + # Convert ORM object to ShowRead explicitly + # We use model_validate to get base fields, then set relationships + s_read = ShowRead.model_validate(show) + + if show.vertical: + s_read.vertical = VerticalSimple.model_validate(show.vertical) + if show.venue: + s_read.venue = VenueRead.model_validate(show.venue) + if show.tour: + s_read.tour = TourRead.model_validate(show.tour) + + response_shows.append(s_read) + return PaginatedResponse( - data=shows, + data=response_shows, meta=PaginationMeta(total=total, limit=limit, offset=offset) )