Select Git revision
test-anonymize
-
Martin Mareš authoredMartin Mareš authored
upgrade-20210111.sql 2.92 KiB
SET ROLE 'mo_osmo';
ALTER TABLE users
ADD COLUMN is_test boolean NOT NULL DEFAULT false; -- testovací účastník, není vidět ve výsledkovkách
CREATE TYPE round_state AS ENUM (
'preparing', -- v přípravě (viditelné pouze organizátorům)
'running', -- je možno odevzdávat
'grading', -- je možno opravovat a vyplňovat body
'closed' -- uzavřeno, není dovoleno nic měnit, zveřejněny výsledky
-- Garanta stavy neomezují, vždycky může všechno.
-- Ve stavu "running" mohou odevzdávat účastníci i dozor, a to i po termínu,
-- jen se odevzdaná řešení zobrazují jako opožděná.
);
ALTER TABLE rounds
ADD COLUMN state round_state NOT NULL DEFAULT 'preparing', -- stav kola
ADD COLUMN tasks_file varchar(255) DEFAULT NULL, -- jméno souboru se zadáním úloh
ADD COLUMN ct_tasks_start timestamp with time zone DEFAULT NULL, -- od kdy účastníci vidí zadání
ADD COLUMN ct_submit_end timestamp with time zone DEFAULT NULL, -- do kdy účastníci mohou regulérně odevzdávat
ADD COLUMN pr_submit_end timestamp with time zone DEFAULT NULL; -- do kdy dozor může regulérně odevzdávat
ALTER TABLE papers
ADD COLUMN note text NOT NULL DEFAULT '';
ALTER TABLE solutions
RENAME COLUMN last_submit TO final_submit,
RENAME COLUMN last_feedback TO final_feedback;
CREATE TYPE job_type AS ENUM (
'download_submits',
'upload_feedback'
);
CREATE TYPE job_state AS ENUM (
'ready',
'running',
'done', -- Hotovo, out_json a out_file jsou platné
'failed' -- Interní chyba při zpracování, viz log
);
CREATE TABLE jobs (
job_id serial PRIMARY KEY,
type job_type NOT NULL,
state job_state NOT NULL,
user_id int NOT NULL REFERENCES users(user_id), -- komu patří
created_at timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP, -- kdy byl založen
finished_at timestamp with time zone DEFAULT NULL, -- kdy doběhl
expires_at timestamp with time zone DEFAULT NULL, -- kdy bude automaticky smazán
description text NOT NULL DEFAULT '',
in_json jsonb DEFAULT NULL,
out_json jsonb DEFAULT NULL,
-- Soubory jsou součástí úlohy a po jejím ukončení budou smazány
in_file varchar(255) DEFAULT NULL,
out_file varchar(255) DEFAULT NULL
);
ALTER TABLE places ADD CONSTRAINT "places_code_key" UNIQUE (code);
CREATE INDEX places_parent_index ON places (parent);
CREATE INDEX participations_contest_id_index ON participations (contest_id, place_id);
CREATE INDEX papers_for_task_index ON papers (for_task);
CREATE INDEX papers_for_user_index ON papers (for_user);
CREATE INDEX solutions_user_id_index ON solutions (user_id);
CREATE INDEX points_history_index ON points_history (task_id, participant_id);
CREATE INDEX log_type_id_index ON log (type, id);