"""add signature and password_reset fields to public.users

Revision ID: usr001
Revises: vat001
Create Date: 2026-06-13
"""
from alembic import op
import sqlalchemy as sa

revision = 'usr001'
down_revision = 'vat001'
branch_labels = None
depends_on = None


def _public_users_column_exists(conn, column):
    return conn.execute(sa.text(
        "SELECT 1 FROM information_schema.columns "
        "WHERE table_schema='public' AND table_name='users' "
        "AND column_name=:c"
    ), {"c": column}).fetchone() is not None


def upgrade():
    conn = op.get_bind()
    if not _public_users_column_exists(conn, 'signature'):
        op.add_column('users', sa.Column('signature', sa.Text(), nullable=True), schema='public')
    if not _public_users_column_exists(conn, 'password_reset_token'):
        op.add_column('users', sa.Column('password_reset_token', sa.String(255), nullable=True), schema='public')
    if not _public_users_column_exists(conn, 'password_reset_sent_at'):
        op.add_column('users', sa.Column('password_reset_sent_at', sa.DateTime(), nullable=True), schema='public')


def downgrade():
    op.drop_column('users', 'password_reset_sent_at', schema='public')
    op.drop_column('users', 'password_reset_token', schema='public')
    op.drop_column('users', 'signature', schema='public')
