42 lines
1.7 KiB
Python
42 lines
1.7 KiB
Python
"""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') |