"""empty message

Revision ID: 198e513f4624
Revises: 
Create Date: 2025-12-07 19:38:37.910655

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = '198e513f4624'
down_revision = None
branch_labels = None
depends_on = None


def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.create_table('ai_assessments',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.Column('patient_id', sa.Integer(), nullable=False),
    sa.Column('ai_name', sa.String(length=50), nullable=False),
    sa.Column('pnx_exists', sa.Integer(), nullable=False),
    sa.Column('pnx_loc', sa.Text(), nullable=False),
    sa.Column('hmx_exists', sa.Integer(), nullable=False),
    sa.Column('hmx_loc', sa.Text(), nullable=False),
    sa.Column('akk_exists', sa.Integer(), nullable=False),
    sa.Column('akk_loc', sa.Text(), nullable=False),
    sa.Column('kot_exists', sa.Integer(), nullable=False),
    sa.Column('kot_loc', sa.Text(), nullable=False),
    sa.Column('created_at', sa.DateTime(), nullable=True),
    sa.Column('updated_at', sa.DateTime(), nullable=True),
    sa.PrimaryKeyConstraint('id')
    )
    op.create_table('api_keys',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.Column('user_id', sa.Integer(), nullable=False),
    sa.Column('_encrypted_api_key', sa.Text(), nullable=False),
    sa.Column('created_at', sa.DateTime(), nullable=True),
    sa.Column('updated_at', sa.DateTime(), nullable=True),
    sa.PrimaryKeyConstraint('id'),
    sa.UniqueConstraint('user_id')
    )
    op.create_table('dr_assessments',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.Column('user_id', sa.Integer(), nullable=False),
    sa.Column('patient_id', sa.Integer(), nullable=False),
    sa.Column('gemini_pnx', sa.Integer(), nullable=True),
    sa.Column('gemini_hmx', sa.Integer(), nullable=True),
    sa.Column('gemini_akk', sa.Integer(), nullable=True),
    sa.Column('gemini_kot', sa.Integer(), nullable=True),
    sa.Column('openai_pnx', sa.Integer(), nullable=True),
    sa.Column('openai_hmx', sa.Integer(), nullable=True),
    sa.Column('openai_akk', sa.Integer(), nullable=True),
    sa.Column('openai_kot', sa.Integer(), nullable=True),
    sa.Column('claude_pnx', sa.Integer(), nullable=True),
    sa.Column('claude_hmx', sa.Integer(), nullable=True),
    sa.Column('claude_akk', sa.Integer(), nullable=True),
    sa.Column('claude_kot', sa.Integer(), nullable=True),
    sa.Column('perplexity_pnx', sa.Integer(), nullable=True),
    sa.Column('perplexity_hmx', sa.Integer(), nullable=True),
    sa.Column('perplexity_akk', sa.Integer(), nullable=True),
    sa.Column('perplexity_kot', sa.Integer(), nullable=True),
    sa.Column('grok_pnx', sa.Integer(), nullable=True),
    sa.Column('grok_hmx', sa.Integer(), nullable=True),
    sa.Column('grok_akk', sa.Integer(), nullable=True),
    sa.Column('grok_kot', sa.Integer(), nullable=True),
    sa.Column('created_at', sa.DateTime(), nullable=True),
    sa.Column('updated_at', sa.DateTime(), nullable=True),
    sa.PrimaryKeyConstraint('id')
    )
    op.create_table('images',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.Column('patient_id', sa.Integer(), nullable=False),
    sa.Column('filename', sa.String(length=250), nullable=True),
    sa.Column('created_at', sa.DateTime(), nullable=True),
    sa.Column('updated_at', sa.DateTime(), nullable=True),
    sa.PrimaryKeyConstraint('id')
    )
    op.create_table('password_reset_tokens',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.Column('user_id', sa.Integer(), nullable=False),
    sa.Column('token', sa.String(length=64), nullable=False),
    sa.Column('created_at', sa.DateTime(), nullable=True),
    sa.PrimaryKeyConstraint('id'),
    sa.UniqueConstraint('token')
    )
    op.create_table('patients',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.Column('user_id', sa.Integer(), nullable=False),
    sa.Column('case_type', sa.String(length=20), nullable=False),
    sa.Column('case_dir', sa.String(length=20), nullable=False),
    sa.Column('created_at', sa.DateTime(), nullable=True),
    sa.Column('updated_at', sa.DateTime(), nullable=True),
    sa.Column('status', sa.Integer(), nullable=False),
    sa.PrimaryKeyConstraint('id')
    )
    op.create_table('roles',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.Column('name', sa.String(length=50), nullable=False),
    sa.PrimaryKeyConstraint('id'),
    sa.UniqueConstraint('name')
    )
    op.create_table('users',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.Column('uuid', sa.String(length=36), nullable=False),
    sa.Column('full_name', sa.String(length=50), nullable=False),
    sa.Column('username', sa.String(length=50), nullable=False),
    sa.Column('phone', sa.String(length=50), nullable=True),
    sa.Column('email', sa.String(length=120), nullable=False),
    sa.Column('password', sa.String(length=120), nullable=False),
    sa.Column('role', sa.Integer(), nullable=False),
    sa.Column('status', sa.Integer(), nullable=False),
    sa.Column('created_at', sa.DateTime(), nullable=True),
    sa.Column('updated_at', sa.DateTime(), nullable=True),
    sa.PrimaryKeyConstraint('id'),
    sa.UniqueConstraint('email'),
    sa.UniqueConstraint('full_name'),
    sa.UniqueConstraint('phone'),
    sa.UniqueConstraint('username'),
    sa.UniqueConstraint('uuid')
    )
    # ### end Alembic commands ###


def downgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.drop_table('users')
    op.drop_table('roles')
    op.drop_table('patients')
    op.drop_table('password_reset_tokens')
    op.drop_table('images')
    op.drop_table('dr_assessments')
    op.drop_table('api_keys')
    op.drop_table('ai_assessments')
    # ### end Alembic commands ###
