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);