"""Migration for users Revision ID: auto Revises: None Create Date: auto """ from alembic import op import sqlalchemy as sa from sqlalchemy.dialects import postgresql # revision identifiers, used by Alembic. revision = 'auto' down_revision = None branch_labels = None depends_on = None def upgrade() -> None: op.create_table( 'users', sa.Column('id', postgresql.UUID(as_uuid=True), primary_key=True, nullable=False), sa.Column('username', sa.String(100), nullable=False, unique=True), sa.Column('email', sa.String(255), nullable=False, unique=True), sa.Column('password_hash', sa.String(255), nullable=False), sa.Column('first_name', sa.String(100), nullable=False), sa.Column('last_name', sa.String(100), nullable=False), sa.Column('specialty', sa.String(100), nullable=True), sa.Column('npi', sa.String(10), nullable=True), sa.Column('last_login_at', sa.DateTime(timezone=True), nullable=True), sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False), sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('CURRENT_TIMESTAMP'), onupdate=sa.text('CURRENT_TIMESTAMP'), nullable=False), ) op.create_index( 'idx_users_username', 'users', ['username'], unique=True ) op.create_index( 'idx_users_email', 'users', ['email'], unique=True ) op.create_index( 'idx_users_npi', 'users', ['npi'], ) op.create_index( 'idx_users_role_is_active', 'users', ['role', 'is_active'], ) def downgrade() -> None: op.drop_index('idx_users_username', table_name='users') op.drop_index('idx_users_email', table_name='users') op.drop_index('idx_users_npi', table_name='users') op.drop_index('idx_users_role_is_active', table_name='users') op.drop_table('users')