From 3bd0f8672b424cd75575fb71bf26ca2f538ac57c Mon Sep 17 00:00:00 2001 From: Shuchang Zheng Date: Wed, 17 Sep 2025 08:07:32 -0700 Subject: [PATCH] add status column to the workflow_scripts table (#3450) --- ...926_add_status_to_the_workflow_scripts_.py | 45 +++++++++++++++++++ skyvern/forge/sdk/db/models.py | 5 ++- skyvern/schemas/scripts.py | 5 +++ 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 alembic/versions/2025_09_17_1458-67add341e926_add_status_to_the_workflow_scripts_.py diff --git a/alembic/versions/2025_09_17_1458-67add341e926_add_status_to_the_workflow_scripts_.py b/alembic/versions/2025_09_17_1458-67add341e926_add_status_to_the_workflow_scripts_.py new file mode 100644 index 00000000..bc679494 --- /dev/null +++ b/alembic/versions/2025_09_17_1458-67add341e926_add_status_to_the_workflow_scripts_.py @@ -0,0 +1,45 @@ +"""add status to the workflow_scripts table; update idx_workflow_scripts_wpid_cache_key_value index + +Revision ID: 67add341e926 +Revises: 8998d998feed +Create Date: 2025-09-17 14:58:20.282185+00:00 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa + +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "67add341e926" +down_revision: Union[str, None] = "8998d998feed" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column("workflow_scripts", sa.Column("status", sa.String(), nullable=True, server_default="published")) + op.drop_index(op.f("idx_workflow_scripts_wpid_cache_key_value"), table_name="workflow_scripts") + op.create_index( + "idx_workflow_scripts_wpid_cache_key_value", + "workflow_scripts", + ["workflow_permanent_id", "cache_key_value", "workflow_run_id"], + unique=False, + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index("idx_workflow_scripts_wpid_cache_key_value", table_name="workflow_scripts") + op.create_index( + op.f("idx_workflow_scripts_wpid_cache_key_value"), + "workflow_scripts", + ["workflow_permanent_id", "cache_key_value"], + unique=False, + ) + op.drop_column("workflow_scripts", "status") + # ### end Alembic commands ### diff --git a/skyvern/forge/sdk/db/models.py b/skyvern/forge/sdk/db/models.py index 18dff772..1f17e436 100644 --- a/skyvern/forge/sdk/db/models.py +++ b/skyvern/forge/sdk/db/models.py @@ -893,7 +893,9 @@ class WorkflowScriptModel(Base): __tablename__ = "workflow_scripts" __table_args__ = ( Index("idx_workflow_scripts_org_created", "organization_id", "created_at"), - Index("idx_workflow_scripts_wpid_cache_key_value", "workflow_permanent_id", "cache_key_value"), + Index( + "idx_workflow_scripts_wpid_cache_key_value", "workflow_permanent_id", "cache_key_value", "workflow_run_id" + ), ) workflow_script_id = Column(String, primary_key=True, default=generate_workflow_script_id) @@ -904,6 +906,7 @@ class WorkflowScriptModel(Base): workflow_run_id = Column(String, nullable=True) cache_key = Column(String, nullable=False) # e.g. "test-{{ website_url }}-cache" cache_key_value = Column(String, nullable=False) # e.g. "test-greenhouse.io/job/1-cache" + status = Column(String, nullable=True, default="published") created_at = Column(DateTime, default=datetime.datetime.utcnow, nullable=False) modified_at = Column( diff --git a/skyvern/schemas/scripts.py b/skyvern/schemas/scripts.py index e7147c50..08efa2b3 100644 --- a/skyvern/schemas/scripts.py +++ b/skyvern/schemas/scripts.py @@ -154,3 +154,8 @@ class ScriptBlocksResponse(BaseModel): class ScriptBlocksRequest(BaseModel): cache_key_value: str cache_key: str | None = None + + +class ScriptStatus(StrEnum): + published = "published" + draft = "draft"