diff --git a/backend/migrations/versions/89527c8da8e1_add_is_private_field_to_events.py b/backend/migrations/versions/89527c8da8e1_add_is_private_field_to_events.py index 50f9a44..d434ede 100644 --- a/backend/migrations/versions/89527c8da8e1_add_is_private_field_to_events.py +++ b/backend/migrations/versions/89527c8da8e1_add_is_private_field_to_events.py @@ -19,17 +19,28 @@ depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: - # ### commands auto generated by Alembic - please adjust! ### - # Ajouter la colonne avec nullable=True d'abord - op.add_column('events', sa.Column('is_private', sa.Boolean(), nullable=True)) - # Mettre à jour toutes les lignes existantes avec False - op.execute("UPDATE events SET is_private = FALSE WHERE is_private IS NULL") - # Rendre la colonne non-nullable avec une valeur par défaut - op.alter_column('events', 'is_private', - existing_type=sa.Boolean(), - nullable=False, - server_default='false') - # ### end Alembic commands ### + # Vérifier si la colonne existe déjà (cas où la migration initiale l'a déjà créée) + bind = op.get_bind() + inspector = sa.inspect(bind) + columns = [col['name'] for col in inspector.get_columns('events')] + + if 'is_private' not in columns: + # Ajouter la colonne avec nullable=True d'abord + op.add_column('events', sa.Column('is_private', sa.Boolean(), nullable=True)) + # Mettre à jour toutes les lignes existantes avec False + op.execute("UPDATE events SET is_private = FALSE WHERE is_private IS NULL") + # Rendre la colonne non-nullable avec une valeur par défaut + op.alter_column('events', 'is_private', + existing_type=sa.Boolean(), + nullable=False, + server_default='false') + else: + # La colonne existe déjà, juste s'assurer qu'elle a les bonnes propriétés + # Vérifier si elle est nullable et la corriger si nécessaire + op.alter_column('events', 'is_private', + existing_type=sa.Boolean(), + nullable=False, + server_default='false') def downgrade() -> None: