From 0eea2f1a1ddab1461d8d74d488490801ddd98c3a Mon Sep 17 00:00:00 2001 From: EvanChal Date: Wed, 28 Jan 2026 20:53:53 +0100 Subject: [PATCH] fix(alembic-migration) --- .../versions/0002_add_push_subscriptions.py | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/backend/migrations/versions/0002_add_push_subscriptions.py b/backend/migrations/versions/0002_add_push_subscriptions.py index 1ece28a..33ab197 100644 --- a/backend/migrations/versions/0002_add_push_subscriptions.py +++ b/backend/migrations/versions/0002_add_push_subscriptions.py @@ -7,6 +7,7 @@ Create Date: 2025-01-27 """ from alembic import op import sqlalchemy as sa +from sqlalchemy import inspect # revision identifiers, used by Alembic. @@ -17,19 +18,25 @@ depends_on = None def upgrade(): - op.create_table( - 'push_subscriptions', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('user_id', sa.Integer(), nullable=False), - sa.Column('endpoint', sa.String(), nullable=False), - sa.Column('p256dh', sa.String(), nullable=False), - sa.Column('auth', sa.String(), nullable=False), - sa.Column('created_at', sa.DateTime(), nullable=True), - sa.ForeignKeyConstraint(['user_id'], ['users.id'], ), - sa.PrimaryKeyConstraint('id'), - sa.UniqueConstraint('endpoint') - ) - op.create_index(op.f('ix_push_subscriptions_id'), 'push_subscriptions', ['id'], unique=False) + # Check if table already exists (idempotent migration) + conn = op.get_bind() + inspector = inspect(conn) + tables = inspector.get_table_names() + + if 'push_subscriptions' not in tables: + op.create_table( + 'push_subscriptions', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('user_id', sa.Integer(), nullable=False), + sa.Column('endpoint', sa.String(), nullable=False), + sa.Column('p256dh', sa.String(), nullable=False), + sa.Column('auth', sa.String(), nullable=False), + sa.Column('created_at', sa.DateTime(), nullable=True), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('endpoint') + ) + op.create_index(op.f('ix_push_subscriptions_id'), 'push_subscriptions', ['id'], unique=False) def downgrade():