"""Add OAuth and OTP fields to users table

Revision ID: 20260317_add_oauth_fields
Revises:
Create Date: 2026-03-17

"""
from alembic import op
import sqlalchemy as sa


def upgrade():
    # Add OAuth and OTP fields to users table
    op.add_column('users', sa.Column('google_id', sa.String(255), nullable=True))
    op.add_column('users', sa.Column('google_access_token', sa.Text(), nullable=True))
    op.add_column('users', sa.Column('google_refresh_token', sa.Text(), nullable=True))
    op.add_column('users', sa.Column('google_email', sa.String(255), nullable=True))
    op.add_column('users', sa.Column('auth_provider', sa.String(20), nullable=False, server_default='email'))
    op.add_column('users', sa.Column('otp_code', sa.String(10), nullable=True))
    op.add_column('users', sa.Column('otp_expires_at', sa.DateTime(), nullable=True))
    op.add_column('users', sa.Column('personal_email', sa.String(255), nullable=True))
    op.add_column('users', sa.Column('email_preference', sa.String(20), nullable=False, server_default='primary'))

    # Create unique index for google_id
    op.create_index('ix_users_google_id', 'users', ['google_id'], unique=True)


def downgrade():
    # Remove OAuth and OTP fields
    op.drop_index('ix_users_google_id', table_name='users')
    op.drop_column('users', 'email_preference')
    op.drop_column('users', 'personal_email')
    op.drop_column('users', 'otp_expires_at')
    op.drop_column('users', 'otp_code')
    op.drop_column('users', 'auth_provider')
    op.drop_column('users', 'google_email')
    op.drop_column('users', 'google_refresh_token')
    op.drop_column('users', 'google_access_token')
    op.drop_column('users', 'google_id')
