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):