"""add email verification fields

Revision ID: add_email_verification
Revises: ae5d0ecfe83f
Create Date: 2025-11-17

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = 'add_email_verification'
down_revision = 'ae5d0ecfe83f'
branch_labels = None
depends_on = None


def upgrade():
    # Add email verification columns to users table
    op.add_column('users', sa.Column('email_verified', sa.Boolean(), nullable=False, server_default='false'))
    op.add_column('users', sa.Column('email_verification_token', sa.String(length=255), nullable=True))
    op.add_column('users', sa.Column('email_verification_expires', sa.DateTime(), nullable=True))
    
    # Create unique constraint on email_verification_token
    op.create_unique_constraint('uq_users_email_verification_token', 'users', ['email_verification_token'])
    
    # Set existing users as verified (they registered before email verification was required)
    op.execute("UPDATE users SET email_verified = TRUE WHERE email_verified = FALSE")


def downgrade():
    # Remove constraint and columns
    op.drop_constraint('uq_users_email_verification_token', 'users', type_='unique')
    op.drop_column('users', 'email_verification_expires')
    op.drop_column('users', 'email_verification_token')
    op.drop_column('users', 'email_verified')
