From 831489cf4f3571677e4ee6332c7217af38889577 Mon Sep 17 00:00:00 2001 From: jlightner Date: Tue, 31 Mar 2026 05:13:17 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20Added=20hidden=20boolean=20column=20to?= =?UTF-8?q?=20Creator=20model,=20migration=20marking=20T=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - "backend/models.py" - "backend/routers/creators.py" - "alembic/versions/009_add_creator_hidden_flag.py" GSD-Task: S02/T01 --- .../versions/009_add_creator_hidden_flag.py | 28 +++++++++++++++++++ backend/models.py | 1 + backend/routers/creators.py | 4 +-- 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 alembic/versions/009_add_creator_hidden_flag.py diff --git a/alembic/versions/009_add_creator_hidden_flag.py b/alembic/versions/009_add_creator_hidden_flag.py new file mode 100644 index 0000000..f2a3702 --- /dev/null +++ b/alembic/versions/009_add_creator_hidden_flag.py @@ -0,0 +1,28 @@ +"""Add hidden boolean flag to creators table. + +Marks test/internal creators as hidden so they are filtered from +public API responses. + +Revision ID: 009_add_creator_hidden_flag +Revises: 008_rename_processing_status +""" +from alembic import op +import sqlalchemy as sa + +revision = "009_add_creator_hidden_flag" +down_revision = "008_rename_processing_status" +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.add_column( + "creators", + sa.Column("hidden", sa.Boolean(), server_default="false", nullable=False), + ) + # Mark known test creator as hidden + op.execute("UPDATE creators SET hidden = true WHERE slug = 'testcreator'") + + +def downgrade() -> None: + op.drop_column("creators", "hidden") diff --git a/backend/models.py b/backend/models.py index e7b21cc..ea505f0 100644 --- a/backend/models.py +++ b/backend/models.py @@ -104,6 +104,7 @@ class Creator(Base): genres: Mapped[list[str] | None] = mapped_column(ARRAY(String), nullable=True) folder_name: Mapped[str] = mapped_column(String(255), nullable=False) view_count: Mapped[int] = mapped_column(Integer, default=0, server_default="0") + hidden: Mapped[bool] = mapped_column(default=False, server_default="false") created_at: Mapped[datetime] = mapped_column( default=_now, server_default=func.now() ) diff --git a/backend/routers/creators.py b/backend/routers/creators.py index 33617b6..1b277b8 100644 --- a/backend/routers/creators.py +++ b/backend/routers/creators.py @@ -51,7 +51,7 @@ async def list_creators( Creator, technique_count_sq.label("technique_count"), video_count_sq.label("video_count"), - ) + ).where(Creator.hidden != True) # noqa: E712 # Genre filter if genre: @@ -81,7 +81,7 @@ async def list_creators( ) # Get total count (without offset/limit) - count_stmt = select(func.count()).select_from(Creator) + count_stmt = select(func.count()).select_from(Creator).where(Creator.hidden != True) # noqa: E712 if genre: count_stmt = count_stmt.where(Creator.genres.any(genre)) total = (await db.execute(count_stmt)).scalar() or 0