From f14f09cbe635feae194b234d2b74632d7ebf3080 Mon Sep 17 00:00:00 2001 From: CREDO23 Date: Mon, 30 Mar 2026 19:33:16 +0200 Subject: [PATCH] add is_public to prompts model, schema, and migration --- .../versions/112_add_is_public_to_prompts.py | 24 +++++++++++++++++++ surfsense_backend/app/db.py | 1 + surfsense_backend/app/schemas/prompts.py | 7 ++++++ 3 files changed, 32 insertions(+) create mode 100644 surfsense_backend/alembic/versions/112_add_is_public_to_prompts.py diff --git a/surfsense_backend/alembic/versions/112_add_is_public_to_prompts.py b/surfsense_backend/alembic/versions/112_add_is_public_to_prompts.py new file mode 100644 index 000000000..23a71ad9f --- /dev/null +++ b/surfsense_backend/alembic/versions/112_add_is_public_to_prompts.py @@ -0,0 +1,24 @@ +"""add is_public to prompts + +Revision ID: 112 +Revises: 111 +""" + +from collections.abc import Sequence + +from alembic import op + +revision: str = "112" +down_revision: str | None = "111" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None + + +def upgrade() -> None: + op.execute( + "ALTER TABLE prompts ADD COLUMN IF NOT EXISTS is_public BOOLEAN NOT NULL DEFAULT false" + ) + + +def downgrade() -> None: + op.execute("ALTER TABLE prompts DROP COLUMN IF EXISTS is_public") diff --git a/surfsense_backend/app/db.py b/surfsense_backend/app/db.py index ef3f6d4c2..17d2df996 100644 --- a/surfsense_backend/app/db.py +++ b/surfsense_backend/app/db.py @@ -1799,6 +1799,7 @@ class Prompt(BaseModel, TimestampMixin): prompt = Column(Text, nullable=False) mode = Column(SQLAlchemyEnum(PromptMode), nullable=False) icon = Column(String(50), nullable=True) + is_public = Column(Boolean, nullable=False, default=False) user = relationship("User") search_space = relationship("SearchSpace") diff --git a/surfsense_backend/app/schemas/prompts.py b/surfsense_backend/app/schemas/prompts.py index c2fd753e6..a92751b12 100644 --- a/surfsense_backend/app/schemas/prompts.py +++ b/surfsense_backend/app/schemas/prompts.py @@ -9,6 +9,7 @@ class PromptCreate(BaseModel): mode: str = Field(..., pattern="^(transform|explore)$") icon: str | None = Field(None, max_length=50) search_space_id: int | None = None + is_public: bool = False class PromptUpdate(BaseModel): @@ -16,6 +17,7 @@ class PromptUpdate(BaseModel): prompt: str | None = Field(None, min_length=1) mode: str | None = Field(None, pattern="^(transform|explore)$") icon: str | None = Field(None, max_length=50) + is_public: bool | None = None class PromptRead(BaseModel): @@ -25,7 +27,12 @@ class PromptRead(BaseModel): mode: str icon: str | None search_space_id: int | None + is_public: bool created_at: datetime class Config: from_attributes = True + + +class PublicPromptRead(PromptRead): + author_name: str | None = None