Spaces:
Running
Running
| """Fix prompt constraints to allow multiple inactive prompts per image type | |
| Revision ID: 0012 | |
| Revises: 0011 | |
| Create Date: 2024-01-01 00:00:00.000000 | |
| """ | |
| from alembic import op | |
| import sqlalchemy as sa | |
| # revision identifiers, used by Alembic. | |
| revision = '0012' | |
| down_revision = '0011' | |
| branch_labels = None | |
| depends_on = None | |
| def upgrade(): | |
| # Check if the constraint exists before trying to drop it | |
| connection = op.get_bind() | |
| inspector = sa.inspect(connection) | |
| # Get existing constraints on the prompts table | |
| constraints = inspector.get_unique_constraints('prompts') | |
| constraint_names = [c['name'] for c in constraints] | |
| # Only drop if the constraint exists | |
| if 'uq_prompts_image_type_active' in constraint_names: | |
| op.drop_constraint('uq_prompts_image_type_active', 'prompts', type_='unique') | |
| # Create a partial unique constraint that only applies when is_active = true | |
| # This allows multiple inactive prompts per image type, but only one active | |
| op.execute(""" | |
| CREATE UNIQUE INDEX uq_prompts_active_per_type | |
| ON prompts (image_type) | |
| WHERE is_active = true | |
| """) | |
| def downgrade(): | |
| # Drop the partial unique constraint | |
| op.execute("DROP INDEX IF EXISTS uq_prompts_active_per_type") | |
| # Recreate the original constraint | |
| op.create_unique_constraint('uq_prompts_image_type_active', 'prompts', ['image_type', 'is_active']) | |