From 2c8828f60cc9ff2fee4c47f07fb1af046cff8cc2 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sun, 10 May 2026 22:45:26 +0530 Subject: [PATCH] fix: ensure idempotency in alembic migrations by checking for existing columns and indexes before creation --- .../versions/136_new_chat_message_turn_id.py | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/surfsense_backend/alembic/versions/136_new_chat_message_turn_id.py b/surfsense_backend/alembic/versions/136_new_chat_message_turn_id.py index 8d4350424..ee02e453c 100644 --- a/surfsense_backend/alembic/versions/136_new_chat_message_turn_id.py +++ b/surfsense_backend/alembic/versions/136_new_chat_message_turn_id.py @@ -36,15 +36,22 @@ depends_on: str | Sequence[str] | None = None def upgrade() -> None: - op.add_column( - "new_chat_messages", - sa.Column("turn_id", sa.String(length=64), nullable=True), - ) - op.create_index( - "ix_new_chat_messages_turn_id", - "new_chat_messages", - ["turn_id"], - ) + bind = op.get_bind() + inspector = sa.inspect(bind) + columns = {c["name"] for c in inspector.get_columns("new_chat_messages")} + indexes = {i["name"] for i in inspector.get_indexes("new_chat_messages")} + + if "turn_id" not in columns: + op.add_column( + "new_chat_messages", + sa.Column("turn_id", sa.String(length=64), nullable=True), + ) + if "ix_new_chat_messages_turn_id" not in indexes: + op.create_index( + "ix_new_chat_messages_turn_id", + "new_chat_messages", + ["turn_id"], + ) def downgrade() -> None: