From 769746197c0394c99c0d272da5c72ac11594c020 Mon Sep 17 00:00:00 2001 From: jlightner Date: Mon, 30 Mar 2026 06:50:01 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20Added=20video=5Ffilename=20field=20to?= =?UTF-8?q?=20KeyMomentSummary=20schema=20and=20populat=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - "backend/schemas.py" - "backend/routers/techniques.py" GSD-Task: S03/T01 --- backend/routers/techniques.py | 10 +++++++--- backend/schemas.py | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/backend/routers/techniques.py b/backend/routers/techniques.py index 5ca68c6..7d2e676 100644 --- a/backend/routers/techniques.py +++ b/backend/routers/techniques.py @@ -11,7 +11,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload from database import get_session -from models import Creator, KeyMoment, RelatedTechniqueLink, TechniquePage +from models import Creator, KeyMoment, RelatedTechniqueLink, SourceVideo, TechniquePage from schemas import ( CreatorInfo, KeyMomentSummary, @@ -75,7 +75,7 @@ async def get_technique( select(TechniquePage) .where(TechniquePage.slug == slug) .options( - selectinload(TechniquePage.key_moments), + selectinload(TechniquePage.key_moments).selectinload(KeyMoment.source_video), selectinload(TechniquePage.creator), selectinload(TechniquePage.outgoing_links).selectinload( RelatedTechniqueLink.target_page @@ -93,7 +93,11 @@ async def get_technique( # Build key moments (ordered by start_time) key_moments = sorted(page.key_moments, key=lambda km: km.start_time) - key_moment_items = [KeyMomentSummary.model_validate(km) for km in key_moments] + key_moment_items = [] + for km in key_moments: + item = KeyMomentSummary.model_validate(km) + item.video_filename = km.source_video.filename if km.source_video else "" + key_moment_items.append(item) # Build creator info creator_info = None diff --git a/backend/schemas.py b/backend/schemas.py index d989758..7afe140 100644 --- a/backend/schemas.py +++ b/backend/schemas.py @@ -286,6 +286,7 @@ class KeyMomentSummary(BaseModel): end_time: float content_type: str plugins: list[str] | None = None + video_filename: str = "" class RelatedLinkItem(BaseModel):