diff --git a/alembic/versions/2024_05_14_0114-bf561125112f_add_workflow_permanent_id_and_version_.py b/alembic/versions/2024_05_14_0114-bf561125112f_add_workflow_permanent_id_and_version_.py new file mode 100644 index 000000000..6d4d27d0c --- /dev/null +++ b/alembic/versions/2024_05_14_0114-bf561125112f_add_workflow_permanent_id_and_version_.py @@ -0,0 +1,32 @@ +"""Add workflow_permanent_id and version to workflows table + +Revision ID: bf561125112f +Revises: 8792454ce498 +Create Date: 2024-05-14 01:14:15.024575+00:00 + +""" +from typing import Sequence, Union + +import sqlalchemy as sa + +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "bf561125112f" +down_revision: Union[str, None] = "8792454ce498" +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("workflows", sa.Column("workflow_permanent_id", sa.String(), nullable=True)) + op.add_column("workflows", sa.Column("version", sa.Integer(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("workflows", "version") + op.drop_column("workflows", "workflow_permanent_id") + # ### end Alembic commands ### diff --git a/skyvern/forge/sdk/db/id.py b/skyvern/forge/sdk/db/id.py index 0b5390b0b..613f12c96 100644 --- a/skyvern/forge/sdk/db/id.py +++ b/skyvern/forge/sdk/db/id.py @@ -34,6 +34,7 @@ STEP_PREFIX = "stp" ARTIFACT_PREFIX = "a" WORKFLOW_PREFIX = "w" +WORKFLOW_PERMANENT_ID_PREFIX = "wpid" WORKFLOW_RUN_PREFIX = "wr" WORKFLOW_PARAMETER_PREFIX = "wp" AWS_SECRET_PARAMETER_PREFIX = "asp" @@ -46,6 +47,11 @@ def generate_workflow_id() -> str: return f"{WORKFLOW_PREFIX}_{int_id}" +def generate_workflow_permanent_id() -> str: + int_id = generate_id() + return f"{WORKFLOW_PERMANENT_ID_PREFIX}_{int_id}" + + def generate_workflow_run_id() -> str: int_id = generate_id() return f"{WORKFLOW_RUN_PREFIX}_{int_id}" diff --git a/skyvern/forge/sdk/db/models.py b/skyvern/forge/sdk/db/models.py index 6e3a4f16c..8604baa41 100644 --- a/skyvern/forge/sdk/db/models.py +++ b/skyvern/forge/sdk/db/models.py @@ -16,6 +16,7 @@ generate_task_id, generate_workflow_id, generate_workflow_parameter_id, + generate_workflow_permanent_id, generate_workflow_run_id, ) from skyvern.forge.sdk.schemas.tasks import ProxyLocation @@ -132,6 +133,9 @@ class WorkflowModel(Base): modified_at = Column(DateTime, default=datetime.datetime.utcnow, onupdate=datetime.datetime.utcnow, nullable=False) deleted_at = Column(DateTime, nullable=True) + workflow_permanent_id = Column(String, default=generate_workflow_permanent_id) + version = Column(Integer, default=1) + class WorkflowRunModel(Base): __tablename__ = "workflow_runs"