"""add email unique index and lockout_until column

Revision ID: g4h5i6j7k8l9
Revises: f3a4b5c6d7e8
Create Date: 2026-04-04

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = 'g4h5i6j7k8l9'
down_revision: Union[str, Sequence[str], None] = 'b2c3d4e5f6a7'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    # Add lockout_until column for DB-persisted brute-force lockout (fix 6)
    op.add_column('user', sa.Column('lockout_until', sa.DateTime(), nullable=True))
    # Add unique index on email — NULLs remain distinct in SQLite so multiple
    # NULL emails are still allowed (fix 5)
    op.create_index('ix_user_email_unique', 'user', ['email'], unique=True)


def downgrade() -> None:
    op.drop_index('ix_user_email_unique', table_name='user')
    op.drop_column('user', 'lockout_until')
