id TEXT PRIMARY KEY,
passphrase TEXT, -- NOT NULL,
admin BOOLEAN NOT NULL DEFAULT FALSE,
id TEXT PRIMARY KEY,
passphrase TEXT, -- NOT NULL,
admin BOOLEAN NOT NULL DEFAULT FALSE,
contest TEXT NOT NULL REFERENCES contests ON DELETE CASCADE,
owner TEXT NOT NULL REFERENCES users ON DELETE CASCADE,
score INT NOT NULL,
contest TEXT NOT NULL REFERENCES contests ON DELETE CASCADE,
owner TEXT NOT NULL REFERENCES users ON DELETE CASCADE,
score INT NOT NULL,
contest TEXT REFERENCES contests ON DELETE CASCADE,
problem TEXT NOT NULL REFERENCES problems ON DELETE CASCADE,
PRIMARY KEY (contest, problem)
);
contest TEXT REFERENCES contests ON DELETE CASCADE,
problem TEXT NOT NULL REFERENCES problems ON DELETE CASCADE,
PRIMARY KEY (contest, problem)
);
problem TEXT NOT NULL REFERENCES problems ON DELETE CASCADE,
owner TEXT NOT NULL REFERENCES users ON DELETE CASCADE,
job SERIAL NOT NULL REFERENCES jobs ON DELETE CASCADE,
problem TEXT NOT NULL REFERENCES problems ON DELETE CASCADE,
owner TEXT NOT NULL REFERENCES users ON DELETE CASCADE,
job SERIAL NOT NULL REFERENCES jobs ON DELETE CASCADE,
contest TEXT NOT NULL REFERENCES contests ON DELETE CASCADE,
problem TEXT NOT NULL REFERENCES problems ON DELETE CASCADE,
owner TEXT NOT NULL REFERENCES users ON DELETE CASCADE,
contest TEXT NOT NULL REFERENCES contests ON DELETE CASCADE,
problem TEXT NOT NULL REFERENCES problems ON DELETE CASCADE,
owner TEXT NOT NULL REFERENCES users ON DELETE CASCADE,
ORDER BY solved DESC, attempted DESC, id);
CREATE OR REPLACE VIEW contest_entry AS (SELECT
ORDER BY solved DESC, attempted DESC, id);
CREATE OR REPLACE VIEW contest_entry AS (SELECT
- id,name,description,editorial,start,stop,owner,
+ id,name,description,start,stop,owner,
(EXTRACT(epoch from NOW()) >= start) AS started,
(EXTRACT(epoch from NOW()) >= stop) AS finished
FROM contests
(EXTRACT(epoch from NOW()) >= start) AS started,
(EXTRACT(epoch from NOW()) >= stop) AS finished
FROM contests