"""Add user authentication system Revision ID: 002 Revises: 001 Create Date: 2024-01-01 11:00:00.000000 """ from alembic import op import sqlalchemy as sa # revision identifiers, used by Alembic. revision = '002' down_revision = '001' branch_labels = None depends_on = None def upgrade() -> None: # Create users table op.create_table('users', sa.Column('id', sa.Integer(), nullable=False), sa.Column('username', sa.String(length=50), nullable=False), sa.Column('email', sa.String(length=100), nullable=False), sa.Column('password_hash', sa.String(length=255), nullable=False), sa.Column('role', sa.String(length=20), nullable=False), sa.Column('is_active', sa.Boolean(), nullable=False), sa.Column('created_at', sa.DateTime(), nullable=False), sa.Column('last_login', sa.DateTime(), nullable=True), sa.PrimaryKeyConstraint('id', name=op.f('pk_users')) ) op.create_index('ix_users_email', 'users', ['email'], unique=True) op.create_index('ix_users_username', 'users', ['username'], unique=True) # Create user_favorites association table op.create_table('user_favorites', sa.Column('user_id', sa.Integer(), nullable=False), sa.Column('game_id', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['game_id'], ['game.id'], name=op.f('fk_user_favorites_game_id_game'), ondelete='CASCADE'), sa.ForeignKeyConstraint(['user_id'], ['users.id'], name=op.f('fk_user_favorites_user_id_users'), ondelete='CASCADE'), sa.PrimaryKeyConstraint('user_id', 'game_id', name=op.f('pk_user_favorites')), sa.UniqueConstraint('user_id', 'game_id', name=op.f('uq_user_favorites_user_id')) ) def downgrade() -> None: op.drop_table('user_favorites') op.drop_table('users')