diff --git a/migrations/versions/004_add_todo_priority_and_due_date.py b/migrations/versions/004_add_todo_priority_and_due_date.py index 0ce95be..4914b22 100644 --- a/migrations/versions/004_add_todo_priority_and_due_date.py +++ b/migrations/versions/004_add_todo_priority_and_due_date.py @@ -18,16 +18,18 @@ depends_on = None def upgrade(): # Create priority_level enum type + # Step 1: Add the priority column with op.batch_alter_table('todos', schema=None) as batch_op: - # Add priority column batch_op.add_column(sa.Column('priority', sa.Enum('low', 'medium', 'high', name='prioritylevel'), nullable=True)) - # Set default values for existing records - batch_op.execute("UPDATE todos SET priority = 'medium' WHERE priority IS NULL") - # Make priority not nullable with default - batch_op.alter_column('priority', nullable=False, server_default='medium') - # Add due_date column batch_op.add_column(sa.Column('due_date', sa.DateTime(), nullable=True)) + + # Step 2: Update existing records with default priority value + op.execute("UPDATE todos SET priority = 'medium' WHERE priority IS NULL") + + # Step 3: Add constraints to make priority non-nullable with default + with op.batch_alter_table('todos', schema=None) as batch_op: + batch_op.alter_column('priority', nullable=False, server_default='medium') def downgrade():