feat: Added video_filename field to KeyMomentSummary schema and populat…

- "backend/schemas.py"
- "backend/routers/techniques.py"

GSD-Task: S03/T01
This commit is contained in:
jlightner 2026-03-30 06:50:01 +00:00
parent 8dc7097603
commit 769746197c
2 changed files with 8 additions and 3 deletions

View file

@ -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

View file

@ -286,6 +286,7 @@ class KeyMomentSummary(BaseModel):
end_time: float
content_type: str
plugins: list[str] | None = None
video_filename: str = ""
class RelatedLinkItem(BaseModel):