diff --git a/alembic/versions/2025_12_10_2211-cf6ae2f5013c_make_browser_address_a_unique_key_in_.py b/alembic/versions/2025_12_10_2211-cf6ae2f5013c_make_browser_address_a_unique_key_in_.py new file mode 100644 index 00000000..e93eef9d --- /dev/null +++ b/alembic/versions/2025_12_10_2211-cf6ae2f5013c_make_browser_address_a_unique_key_in_.py @@ -0,0 +1,31 @@ +"""make browser_address a unique key in persistent_browser_sessions table + +Revision ID: cf6ae2f5013c +Revises: 174dcd456325 +Create Date: 2025-12-10 22:11:03.926337+00:00 + +""" + +from typing import Sequence, Union + +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "cf6ae2f5013c" +down_revision: Union[str, None] = "174dcd456325" +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.create_unique_constraint( + "uc_persistent_browser_sessions_browser_address", "persistent_browser_sessions", ["browser_address"] + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint("uc_persistent_browser_sessions_browser_address", "persistent_browser_sessions", type_="unique") + # ### end Alembic commands ### diff --git a/skyvern/forge/sdk/db/models.py b/skyvern/forge/sdk/db/models.py index da0c50da..230c5128 100644 --- a/skyvern/forge/sdk/db/models.py +++ b/skyvern/forge/sdk/db/models.py @@ -822,7 +822,7 @@ class PersistentBrowserSessionModel(Base): runnable_type = Column(String, nullable=True) runnable_id = Column(String, nullable=True, index=True) browser_id = Column(String, nullable=True) - browser_address = Column(String, nullable=True) + browser_address = Column(String, nullable=True, unique=True) status = Column(String, nullable=True, default="created") timeout_minutes = Column(Integer, nullable=True) ip_address = Column(String, nullable=True)