"""Add student-verification fields to user_profiles.

Turns the automatic "Verified Student" badge into a moderated workflow: the
student submits university details (mobile reuses the existing phone_number) and
an admin approves/rejects. Existing accounts default to NOT_VERIFIED — the badge
is no longer automatic. No existing columns are changed; email verification
(users.is_verified) is untouched.

Revision ID: a1c3e5b7d9f2
Revises: f2b4d6e8a0c3
Create Date: 2026-07-05

"""
from alembic import op
import sqlalchemy as sa


revision = "a1c3e5b7d9f2"
down_revision = "f2b4d6e8a0c3"
branch_labels = None
depends_on = None

_BIGINT = sa.BigInteger().with_variant(sa.Integer(), "sqlite")
_STATUS = sa.Enum("not_verified", "pending", "verified", "rejected", name="student_verification_status")


def upgrade():
    with op.batch_alter_table("user_profiles", schema=None) as batch_op:
        batch_op.add_column(sa.Column("university_name", sa.String(length=150), nullable=True))
        batch_op.add_column(sa.Column("university_student_id", sa.String(length=60), nullable=True))
        batch_op.add_column(sa.Column(
            "verification_status", _STATUS, nullable=False, server_default="not_verified"))
        batch_op.add_column(sa.Column("verification_submitted_at", sa.DateTime(), nullable=True))
        batch_op.add_column(sa.Column("verification_reviewed_at", sa.DateTime(), nullable=True))
        batch_op.add_column(sa.Column("verification_reviewed_by", _BIGINT, nullable=True))
        batch_op.add_column(sa.Column("verification_reason", sa.String(length=300), nullable=True))


def downgrade():
    with op.batch_alter_table("user_profiles", schema=None) as batch_op:
        batch_op.drop_column("verification_reason")
        batch_op.drop_column("verification_reviewed_by")
        batch_op.drop_column("verification_reviewed_at")
        batch_op.drop_column("verification_submitted_at")
        batch_op.drop_column("verification_status")
        batch_op.drop_column("university_student_id")
        batch_op.drop_column("university_name")
