Update schema
[gruntmaster-data.git] / db.sql
1 CREATE TYPE ULEVEL AS ENUM ('Highschool', 'Undergraduate', 'Master', 'Doctorate', 'Other');
2 CREATE TYPE PLEVEL AS ENUM ('beginner', 'easy', 'medium', 'hard');
3 CREATE TYPE GENERATOR AS ENUM ('File', 'Run', 'Undef');
4 CREATE TYPE RUNNER AS ENUM ('File', 'Verifier', 'Interactive');
5 CREATE TYPE JUDGE AS ENUM ('Absolute', 'Points');
6
7 CREATE TABLE users (
8 id TEXT PRIMARY KEY,
9 name TEXT, -- NOT NULL,
10 email TEXT, -- NOT NULL,
11 town TEXT, -- NOT NULL,
12 university TEXT, -- NOT NULL,
13 level TEXT, --ULEVEL NOT NULL,
14 lastjob BIGINT
15 );
16
17 CREATE TABLE contests (
18 id TEXT PRIMARY KEY,
19 name TEXT NOT NULL,
20 start INT NOT NULL,
21 stop INT NOT NULL,
22 owner TEXT NOT NULL REFERENCES users,
23 CONSTRAINT positive_duration CHECK (stop > start)
24 );
25
26 CREATE TABLE problems (
27 id TEXT PRIMARY KEY,
28 author TEXT NOT NULL,
29 generator GENERATOR NOT NULL,
30 judge JUDGE NOT NULL,
31 level PLEVEL NOT NULL,
32 name TEXT NOT NULL,
33 olimit INT,
34 owner TEXT NOT NULL REFERENCES users,
35 private BOOLEAN NOT NULL DEFAULT FALSE,
36 runner RUNNER NOT NULL,
37 statement TEXT NOT NULL,
38 testcnt INT NOT NULL,
39 tests TEXT,
40 timeout REAL NOT NULL,
41 value INT,
42 verformat TEXT,
43 versource TEXT
44 );
45
46 CREATE TABLE contest_problems (
47 contest TEXT REFERENCES contests,
48 problem TEXT NOT NULL REFERENCES problems,
49 PRIMARY KEY (contest, problem)
50 );
51
52 CREATE TABLE jobs (
53 id SERIAL PRIMARY KEY,
54 contest TEXT REFERENCES contests,
55 daemon TEXT,
56 date BIGINT NOT NULL,
57 errors TEXT,
58 extension TEXT NOT NULL,
59 format TEXT NOT NULL,
60 private BOOLEAN NOT NULL DEFAULT FALSE,
61 problem TEXT NOT NULL REFERENCES problems,
62 result INT,
63 result_text TEXT,
64 results JSON,
65 source TEXT NOT NULL,
66 owner TEXT NOT NULL REFERENCES users
67 );
68
69 CREATE TABLE opens (
70 contest TEXT NOT NULL REFERENCES contests,
71 problem TEXT NOT NULL REFERENCES problems,
72 owner TEXT NOT NULL REFERENCES users,
73 time BIGINT NOT NULL,
74 PRIMARY KEY (contest, problem, owner)
75 );
This page took 0.022397 seconds and 4 git commands to generate.