librectf-rust/server/migrations/versions/59f8fa2f0c98_.py

452 lines
18 KiB
Python

"""Initial.
Revision ID: 59f8fa2f0c98
Revises:
Create Date: 2018-02-21 04:34:27.788175
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = "59f8fa2f0c98"
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("now()"),
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 ###