From 371494c2f866285ef44ffa4cb96ab6fc7ea3593f Mon Sep 17 00:00:00 2001 From: jlightner Date: Fri, 3 Apr 2026 09:07:34 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20Added=20summary,=20topic=5Ftags,=20and?= =?UTF-8?q?=20key=5Fmoment=5Fcount=20fields=20to=20Creator=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - "backend/schemas.py" - "backend/routers/creators.py" GSD-Task: S03/T01 --- backend/routers/creators.py | 14 +++++++++++++- backend/schemas.py | 3 +++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/backend/routers/creators.py b/backend/routers/creators.py index 0628a4c..79365f0 100644 --- a/backend/routers/creators.py +++ b/backend/routers/creators.py @@ -12,7 +12,7 @@ from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession from database import get_session -from models import Creator, SourceVideo, TechniquePage +from models import Creator, KeyMoment, SourceVideo, TechniquePage from schemas import CreatorBrowseItem, CreatorDetail, CreatorRead, CreatorTechniqueItem logger = logging.getLogger("chrysopedia.creators") @@ -137,12 +137,22 @@ async def get_creator( )).scalar() or 0 # Technique pages for this creator + key_moment_count_sq = ( + select(func.count(KeyMoment.id)) + .where(KeyMoment.technique_page_id == TechniquePage.id) + .correlate(TechniquePage) + .scalar_subquery() + .label("key_moment_count") + ) technique_rows = (await db.execute( select( TechniquePage.title, TechniquePage.slug, TechniquePage.topic_category, TechniquePage.created_at, + TechniquePage.summary, + TechniquePage.topic_tags, + key_moment_count_sq, ) .where(TechniquePage.creator_id == creator.id) .order_by(TechniquePage.created_at.desc()) @@ -152,6 +162,8 @@ async def get_creator( CreatorTechniqueItem( title=t.title, slug=t.slug, topic_category=t.topic_category, created_at=t.created_at, + summary=t.summary, topic_tags=t.topic_tags, + key_moment_count=t.key_moment_count, ) for t in technique_rows ] diff --git a/backend/schemas.py b/backend/schemas.py index 9a646f0..2eb7b21 100644 --- a/backend/schemas.py +++ b/backend/schemas.py @@ -49,6 +49,9 @@ class CreatorTechniqueItem(BaseModel): slug: str topic_category: str created_at: datetime + summary: str | None = None + topic_tags: list[str] | None = None + key_moment_count: int = 0 class CreatorDetail(CreatorRead):