From 5c29914a204ba3a804752ee2c7579ed14570748d Mon Sep 17 00:00:00 2001 From: Shuchang Zheng Date: Tue, 13 May 2025 15:22:24 -0700 Subject: [PATCH] add started_at and completed_at to the persistent_browser_sessions table (#2337) --- ...add_started_at_and_completed_at_to_the_.py | 46 +++++++++++++++++++ skyvern/forge/sdk/db/models.py | 7 ++- 2 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 alembic/versions/2025_05_13_2210-11b84609ef08_add_started_at_and_completed_at_to_the_.py diff --git a/alembic/versions/2025_05_13_2210-11b84609ef08_add_started_at_and_completed_at_to_the_.py b/alembic/versions/2025_05_13_2210-11b84609ef08_add_started_at_and_completed_at_to_the_.py new file mode 100644 index 00000000..42796f02 --- /dev/null +++ b/alembic/versions/2025_05_13_2210-11b84609ef08_add_started_at_and_completed_at_to_the_.py @@ -0,0 +1,46 @@ +"""add started_at and completed_at to the persistent_browser_sessions table + +Revision ID: 11b84609ef08 +Revises: 07cb499ecbce +Create Date: 2025-05-13 22:10:20.231269+00:00 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa + +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "11b84609ef08" +down_revision: Union[str, None] = "07cb499ecbce" +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("persistent_browser_sessions", sa.Column("timeout_minutes", sa.Integer(), nullable=True)) + op.add_column("persistent_browser_sessions", sa.Column("started_at", sa.DateTime(), nullable=True)) + op.add_column("persistent_browser_sessions", sa.Column("completed_at", sa.DateTime(), nullable=True)) + op.create_index( + op.f("ix_persistent_browser_sessions_created_at"), "persistent_browser_sessions", ["created_at"], unique=False + ) + op.create_index( + op.f("ix_persistent_browser_sessions_organization_id"), + "persistent_browser_sessions", + ["organization_id"], + unique=False, + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index(op.f("ix_persistent_browser_sessions_organization_id"), table_name="persistent_browser_sessions") + op.drop_index(op.f("ix_persistent_browser_sessions_created_at"), table_name="persistent_browser_sessions") + op.drop_column("persistent_browser_sessions", "completed_at") + op.drop_column("persistent_browser_sessions", "started_at") + op.drop_column("persistent_browser_sessions", "timeout_minutes") + # ### end Alembic commands ### diff --git a/skyvern/forge/sdk/db/models.py b/skyvern/forge/sdk/db/models.py index 0e57df60..dd5b8783 100644 --- a/skyvern/forge/sdk/db/models.py +++ b/skyvern/forge/sdk/db/models.py @@ -626,13 +626,16 @@ class PersistentBrowserSessionModel(Base): __tablename__ = "persistent_browser_sessions" persistent_browser_session_id = Column(String, primary_key=True, default=generate_persistent_browser_session_id) - organization_id = Column(String, nullable=False) + organization_id = Column(String, nullable=False, index=True) runnable_type = Column(String, nullable=True) runnable_id = Column(String, nullable=True) browser_id = Column(String, nullable=True) browser_address = Column(String, nullable=True) status = Column(String, nullable=True, default="created") - created_at = Column(DateTime, default=datetime.datetime.utcnow, nullable=False) + timeout_minutes = Column(Integer, nullable=True) + started_at = Column(DateTime, nullable=True) + completed_at = Column(DateTime, nullable=True) + created_at = Column(DateTime, default=datetime.datetime.utcnow, nullable=False, index=True) modified_at = Column(DateTime, default=datetime.datetime.utcnow, onupdate=datetime.datetime.utcnow, nullable=False) deleted_at = Column(DateTime, nullable=True)