"""Add user verification fields Revision ID: 002 Revises: 001 Create Date: 2023-07-21 """ import sqlalchemy as sa from alembic import op from sqlalchemy.sql import column, table # revision identifiers, used by Alembic. revision = '002' down_revision = '001' branch_labels = None depends_on = None def upgrade(): # Add verification and reset password fields to user table with op.batch_alter_table('user') as batch_op: batch_op.add_column(sa.Column('is_verified', sa.Boolean(), nullable=False, server_default='0')) batch_op.add_column(sa.Column('verification_token', sa.String(), nullable=True)) batch_op.add_column(sa.Column('verification_token_expires', sa.DateTime(), nullable=True)) batch_op.add_column(sa.Column('password_reset_token', sa.String(), nullable=True)) batch_op.add_column(sa.Column('password_reset_token_expires', sa.DateTime(), nullable=True)) # Create indexes for tokens to speed up lookups batch_op.create_index(op.f('ix_user_verification_token'), ['verification_token'], unique=False) batch_op.create_index(op.f('ix_user_password_reset_token'), ['password_reset_token'], unique=False) def downgrade(): # Remove verification and reset password fields from user table with op.batch_alter_table('user') as batch_op: batch_op.drop_index(op.f('ix_user_password_reset_token')) batch_op.drop_index(op.f('ix_user_verification_token')) batch_op.drop_column('password_reset_token_expires') batch_op.drop_column('password_reset_token') batch_op.drop_column('verification_token_expires') batch_op.drop_column('verification_token') batch_op.drop_column('is_verified')