"""empty message Revision ID: c226d7f7ad5a Revises: Create Date: 2020-11-25 21:23:24.378872 """ from alembic import op import sqlalchemy as sa # revision identifiers, used by Alembic. revision = 'c226d7f7ad5a' down_revision = None branch_labels = None depends_on = None def upgrade(): # ### commands auto generated by Alembic - please adjust! ### op.create_table('classrooms', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.Unicode(length=64), nullable=False), sa.Column('owner', sa.Integer(), nullable=True), sa.PrimaryKeyConstraint('id') ) op.create_table('config', sa.Column('cid', sa.Integer(), nullable=False), sa.Column('key', sa.Unicode(length=32), nullable=True), sa.Column('value', sa.Text(), nullable=True), sa.PrimaryKeyConstraint('cid') ) op.create_index(op.f('ix_config_key'), 'config', ['key'], unique=False) op.create_table('eggs', sa.Column('eid', sa.Integer(), nullable=False), sa.Column('flag', sa.Unicode(length=64), nullable=False), sa.PrimaryKeyConstraint('eid') ) op.create_index(op.f('ix_eggs_flag'), 'eggs', ['flag'], unique=True) op.create_table('judge_api_keys', sa.Column('id', sa.Integer(), nullable=False), sa.Column('key', sa.String(length=64), nullable=True), sa.Column('ip', sa.Integer(), nullable=True), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_judge_api_keys_key'), 'judge_api_keys', ['key'], unique=False) op.create_table('problems', sa.Column('pid', sa.Integer(), nullable=False), sa.Column('author', sa.Unicode(length=32), nullable=True), sa.Column('name', sa.String(length=32), nullable=True), sa.Column('title', sa.Unicode(length=64), nullable=True), sa.Column('description', sa.Text(), nullable=True), sa.Column('hint', sa.Text(), nullable=True), sa.Column('category', sa.Unicode(length=64), nullable=True), sa.Column('value', sa.Integer(), nullable=True), sa.Column('grader', sa.UnicodeText(), nullable=True), sa.Column('autogen', sa.Boolean(), nullable=True), sa.Column('programming', sa.Boolean(), nullable=True), sa.Column('threshold', sa.Integer(), nullable=True), sa.Column('weightmap', sa.PickleType(), nullable=True), sa.Column('test_cases', sa.Integer(), nullable=True), sa.Column('time_limit', sa.Integer(), nullable=True), sa.Column('memory_limit', sa.Integer(), nullable=True), sa.Column('generator', sa.Text(), nullable=True), sa.Column('source_verifier', sa.Text(), nullable=True), sa.Column('path', sa.String(length=128), nullable=True), sa.PrimaryKeyConstraint('pid'), sa.UniqueConstraint('name') ) op.create_index(op.f('ix_problems_pid'), 'problems', ['pid'], unique=False) op.create_table('teams', sa.Column('tid', sa.Integer(), nullable=False), sa.Column('teamname', sa.Unicode(length=32), nullable=True), sa.Column('school', sa.Unicode(length=64), nullable=True), sa.Column('owner', sa.Integer(), nullable=True), sa.Column('admin', sa.Boolean(), nullable=True), sa.Column('shell_user', sa.String(length=16), nullable=True), sa.Column('shell_pass', sa.String(length=32), nullable=True), sa.Column('banned', sa.Boolean(), nullable=True), sa.Column('avatar', sa.String(length=128), nullable=True), sa.PrimaryKeyConstraint('tid'), sa.UniqueConstraint('shell_user'), sa.UniqueConstraint('teamname') ) op.create_index(op.f('ix_teams_tid'), 'teams', ['tid'], unique=False) op.create_table('autogen_files', sa.Column('id', sa.Integer(), nullable=False), sa.Column('pid', sa.Integer(), nullable=True), sa.Column('tid', sa.Integer(), nullable=True), sa.Column('filename', sa.Unicode(length=64), nullable=True), sa.Column('url', sa.String(length=128), nullable=True), sa.ForeignKeyConstraint(['pid'], ['problems.pid'], ), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_autogen_files_filename'), 'autogen_files', ['filename'], unique=False) op.create_index(op.f('ix_autogen_files_id'), 'autogen_files', ['id'], unique=False) op.create_index(op.f('ix_autogen_files_pid'), 'autogen_files', ['pid'], unique=False) op.create_index(op.f('ix_autogen_files_tid'), 'autogen_files', ['tid'], unique=False) op.create_table('classroom_invitation', sa.Column('team_id', sa.Integer(), nullable=False), sa.Column('classroom_id', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['classroom_id'], ['classrooms.id'], ), sa.ForeignKeyConstraint(['team_id'], ['teams.tid'], ), sa.PrimaryKeyConstraint('team_id', 'classroom_id') ) op.create_table('files', sa.Column('id', sa.Integer(), nullable=False), sa.Column('pid', sa.Integer(), nullable=True), sa.Column('filename', sa.Unicode(length=64), nullable=True), sa.Column('url', sa.String(length=128), nullable=True), sa.ForeignKeyConstraint(['pid'], ['problems.pid'], ), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_files_id'), 'files', ['id'], unique=False) op.create_index(op.f('ix_files_pid'), 'files', ['pid'], unique=False) op.create_table('team_classroom', sa.Column('team_id', sa.Integer(), nullable=False), sa.Column('classroom_id', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['classroom_id'], ['classrooms.id'], ), sa.ForeignKeyConstraint(['team_id'], ['teams.tid'], ), sa.PrimaryKeyConstraint('team_id', 'classroom_id') ) op.create_table('users', sa.Column('uid', sa.Integer(), nullable=False), sa.Column('tid', sa.Integer(), nullable=True), sa.Column('name', sa.Unicode(length=32), nullable=True), sa.Column('easyctf', sa.Boolean(), nullable=True), sa.Column('username', sa.String(length=16), nullable=True), sa.Column('email', sa.String(length=128), nullable=True), sa.Column('password', sa.String(length=128), nullable=True), sa.Column('admin', sa.Boolean(), nullable=True), sa.Column('level', sa.Integer(), nullable=True), sa.Column('register_time', sa.DateTime(), nullable=True), sa.Column('reset_token', sa.String(length=32), nullable=True), sa.Column('otp_secret', sa.String(length=16), nullable=True), sa.Column('otp_confirmed', sa.Boolean(), nullable=True), sa.Column('email_token', sa.String(length=32), nullable=True), sa.Column('email_verified', sa.Boolean(), nullable=True), sa.Column('avatar', sa.String(length=128), nullable=True), sa.ForeignKeyConstraint(['tid'], ['teams.tid'], ), sa.PrimaryKeyConstraint('uid'), sa.UniqueConstraint('email') ) op.create_index(op.f('ix_users_easyctf'), 'users', ['easyctf'], unique=False) op.create_index(op.f('ix_users_uid'), 'users', ['uid'], unique=False) op.create_index(op.f('ix_users_username'), 'users', ['username'], unique=True) op.create_table('egg_solves', sa.Column('sid', sa.Integer(), nullable=False), sa.Column('eid', sa.Integer(), nullable=True), sa.Column('tid', sa.Integer(), nullable=True), sa.Column('uid', sa.Integer(), nullable=True), sa.Column('date', sa.DateTime(), nullable=True), sa.ForeignKeyConstraint(['eid'], ['eggs.eid'], ), sa.ForeignKeyConstraint(['tid'], ['teams.tid'], ), sa.ForeignKeyConstraint(['uid'], ['users.uid'], ), sa.PrimaryKeyConstraint('sid') ) op.create_index(op.f('ix_egg_solves_eid'), 'egg_solves', ['eid'], unique=False) op.create_index(op.f('ix_egg_solves_tid'), 'egg_solves', ['tid'], unique=False) op.create_index(op.f('ix_egg_solves_uid'), 'egg_solves', ['uid'], unique=False) op.create_table('game_states', sa.Column('id', sa.Integer(), nullable=False), sa.Column('uid', sa.Integer(), nullable=True), sa.Column('last_updated', sa.DateTime(), server_default=sa.text('(CURRENT_TIMESTAMP)'), nullable=True), sa.Column('state', sa.UnicodeText(), nullable=False), sa.ForeignKeyConstraint(['uid'], ['users.uid'], ), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('last_updated'), sa.UniqueConstraint('uid') ) op.create_table('jobs', sa.Column('id', sa.Integer(), nullable=False), sa.Column('pid', sa.Integer(), nullable=True), sa.Column('tid', sa.Integer(), nullable=True), sa.Column('uid', sa.Integer(), nullable=True), sa.Column('submitted', sa.DateTime(), nullable=True), sa.Column('claimed', sa.DateTime(), nullable=True), sa.Column('completed', sa.DateTime(), nullable=True), sa.Column('execution_time', sa.Float(), nullable=True), sa.Column('execution_memory', sa.Float(), nullable=True), sa.Column('language', sa.String(length=16), nullable=False), sa.Column('contents', sa.Text(), nullable=False), sa.Column('feedback', sa.Text(), nullable=True), sa.Column('status', sa.Integer(), nullable=False), sa.Column('verdict', sa.String(length=8), nullable=True), sa.Column('last_ran_case', sa.Integer(), nullable=True), sa.ForeignKeyConstraint(['pid'], ['problems.pid'], ), sa.ForeignKeyConstraint(['tid'], ['teams.tid'], ), sa.ForeignKeyConstraint(['uid'], ['users.uid'], ), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_jobs_pid'), 'jobs', ['pid'], unique=False) op.create_index(op.f('ix_jobs_status'), 'jobs', ['status'], unique=False) op.create_index(op.f('ix_jobs_tid'), 'jobs', ['tid'], unique=False) op.create_index(op.f('ix_jobs_uid'), 'jobs', ['uid'], unique=False) op.create_table('password_reset_tokens', sa.Column('id', sa.Integer(), nullable=False), sa.Column('uid', sa.Integer(), nullable=True), sa.Column('active', sa.Boolean(), nullable=True), sa.Column('token', sa.String(length=32), nullable=True), sa.Column('email', sa.Unicode(length=128), nullable=True), sa.Column('expire', sa.DateTime(), nullable=True), sa.ForeignKeyConstraint(['uid'], ['users.uid'], ), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_password_reset_tokens_uid'), 'password_reset_tokens', ['uid'], unique=False) op.create_table('player_team_invitation', sa.Column('user_id', sa.Integer(), nullable=True), sa.Column('team_id', sa.Integer(), nullable=True), sa.ForeignKeyConstraint(['team_id'], ['teams.tid'], ), sa.ForeignKeyConstraint(['user_id'], ['users.uid'], ) ) op.create_table('solves', sa.Column('id', sa.Integer(), nullable=False), sa.Column('pid', sa.Integer(), nullable=True), sa.Column('tid', sa.Integer(), nullable=True), sa.Column('uid', sa.Integer(), nullable=True), sa.Column('date', sa.DateTime(), nullable=True), sa.Column('flag', sa.Unicode(length=256), nullable=True), sa.ForeignKeyConstraint(['pid'], ['problems.pid'], ), sa.ForeignKeyConstraint(['tid'], ['teams.tid'], ), sa.ForeignKeyConstraint(['uid'], ['users.uid'], ), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('pid', 'tid') ) op.create_index(op.f('ix_solves_id'), 'solves', ['id'], unique=False) op.create_index(op.f('ix_solves_pid'), 'solves', ['pid'], unique=False) op.create_index(op.f('ix_solves_tid'), 'solves', ['tid'], unique=False) op.create_index(op.f('ix_solves_uid'), 'solves', ['uid'], unique=False) op.create_table('team_player_invitation', sa.Column('team_id', sa.Integer(), nullable=True), sa.Column('user_id', sa.Integer(), nullable=True), sa.ForeignKeyConstraint(['team_id'], ['teams.tid'], ), sa.ForeignKeyConstraint(['user_id'], ['users.uid'], ) ) op.create_table('wrong_egg', sa.Column('id', sa.Integer(), nullable=False), sa.Column('eid', sa.Integer(), nullable=True), sa.Column('tid', sa.Integer(), nullable=True), sa.Column('uid', sa.Integer(), nullable=True), sa.Column('date', sa.DateTime(), nullable=True), sa.Column('submission', sa.Unicode(length=64), nullable=True), sa.ForeignKeyConstraint(['eid'], ['eggs.eid'], ), sa.ForeignKeyConstraint(['tid'], ['teams.tid'], ), sa.ForeignKeyConstraint(['uid'], ['users.uid'], ), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_wrong_egg_eid'), 'wrong_egg', ['eid'], unique=False) op.create_index(op.f('ix_wrong_egg_tid'), 'wrong_egg', ['tid'], unique=False) op.create_index(op.f('ix_wrong_egg_uid'), 'wrong_egg', ['uid'], unique=False) op.create_table('wrong_flags', sa.Column('id', sa.Integer(), nullable=False), sa.Column('pid', sa.Integer(), nullable=True), sa.Column('tid', sa.Integer(), nullable=True), sa.Column('uid', sa.Integer(), nullable=True), sa.Column('date', sa.DateTime(), nullable=True), sa.Column('flag', sa.Unicode(length=256), nullable=True), sa.ForeignKeyConstraint(['pid'], ['problems.pid'], ), sa.ForeignKeyConstraint(['tid'], ['teams.tid'], ), sa.ForeignKeyConstraint(['uid'], ['users.uid'], ), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_wrong_flags_flag'), 'wrong_flags', ['flag'], unique=False) op.create_index(op.f('ix_wrong_flags_id'), 'wrong_flags', ['id'], unique=False) op.create_index(op.f('ix_wrong_flags_pid'), 'wrong_flags', ['pid'], unique=False) op.create_index(op.f('ix_wrong_flags_tid'), 'wrong_flags', ['tid'], unique=False) op.create_index(op.f('ix_wrong_flags_uid'), 'wrong_flags', ['uid'], unique=False) # ### end Alembic commands ### def downgrade(): # ### commands auto generated by Alembic - please adjust! ### op.drop_index(op.f('ix_wrong_flags_uid'), table_name='wrong_flags') op.drop_index(op.f('ix_wrong_flags_tid'), table_name='wrong_flags') op.drop_index(op.f('ix_wrong_flags_pid'), table_name='wrong_flags') op.drop_index(op.f('ix_wrong_flags_id'), table_name='wrong_flags') op.drop_index(op.f('ix_wrong_flags_flag'), table_name='wrong_flags') op.drop_table('wrong_flags') op.drop_index(op.f('ix_wrong_egg_uid'), table_name='wrong_egg') op.drop_index(op.f('ix_wrong_egg_tid'), table_name='wrong_egg') op.drop_index(op.f('ix_wrong_egg_eid'), table_name='wrong_egg') op.drop_table('wrong_egg') op.drop_table('team_player_invitation') op.drop_index(op.f('ix_solves_uid'), table_name='solves') op.drop_index(op.f('ix_solves_tid'), table_name='solves') op.drop_index(op.f('ix_solves_pid'), table_name='solves') op.drop_index(op.f('ix_solves_id'), table_name='solves') op.drop_table('solves') op.drop_table('player_team_invitation') op.drop_index(op.f('ix_password_reset_tokens_uid'), table_name='password_reset_tokens') op.drop_table('password_reset_tokens') op.drop_index(op.f('ix_jobs_uid'), table_name='jobs') op.drop_index(op.f('ix_jobs_tid'), table_name='jobs') op.drop_index(op.f('ix_jobs_status'), table_name='jobs') op.drop_index(op.f('ix_jobs_pid'), table_name='jobs') op.drop_table('jobs') op.drop_table('game_states') op.drop_index(op.f('ix_egg_solves_uid'), table_name='egg_solves') op.drop_index(op.f('ix_egg_solves_tid'), table_name='egg_solves') op.drop_index(op.f('ix_egg_solves_eid'), table_name='egg_solves') op.drop_table('egg_solves') op.drop_index(op.f('ix_users_username'), table_name='users') op.drop_index(op.f('ix_users_uid'), table_name='users') op.drop_index(op.f('ix_users_easyctf'), table_name='users') op.drop_table('users') op.drop_table('team_classroom') op.drop_index(op.f('ix_files_pid'), table_name='files') op.drop_index(op.f('ix_files_id'), table_name='files') op.drop_table('files') op.drop_table('classroom_invitation') op.drop_index(op.f('ix_autogen_files_tid'), table_name='autogen_files') op.drop_index(op.f('ix_autogen_files_pid'), table_name='autogen_files') op.drop_index(op.f('ix_autogen_files_id'), table_name='autogen_files') op.drop_index(op.f('ix_autogen_files_filename'), table_name='autogen_files') op.drop_table('autogen_files') op.drop_index(op.f('ix_teams_tid'), table_name='teams') op.drop_table('teams') op.drop_index(op.f('ix_problems_pid'), table_name='problems') op.drop_table('problems') op.drop_index(op.f('ix_judge_api_keys_key'), table_name='judge_api_keys') op.drop_table('judge_api_keys') op.drop_index(op.f('ix_eggs_flag'), table_name='eggs') op.drop_table('eggs') op.drop_index(op.f('ix_config_key'), table_name='config') op.drop_table('config') op.drop_table('classrooms') # ### end Alembic commands ###