parent
a35ef5f303
commit
6e365bbd16
|
@ -0,0 +1,51 @@
|
|||
BEGIN;
|
||||
|
||||
UPDATE version SET minor = 2;
|
||||
|
||||
CREATE TABLE requestMetadata (
|
||||
url varchar NOT NULL UNIQUE,
|
||||
videoTitle varchar DEFAULT NULL,
|
||||
PRIMARY KEY (url),
|
||||
FOREIGN KEY (url) REFERENCES requests(url) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
DROP VIEW requests_vw;
|
||||
CREATE VIEW requests_vw AS
|
||||
SELECT url,COALESCE(videoTitle,url) AS title,displayName AS requester,imageUrl,state,score,reqTimestamp FROM requests
|
||||
JOIN requestMetadata USING (url)
|
||||
JOIN scores USING (url)
|
||||
JOIN users ON requests.requester = users.userid
|
||||
ORDER BY score DESC, reqTimestamp ASC;
|
||||
|
||||
DROP FUNCTION get_requests_voted;
|
||||
CREATE FUNCTION get_requests_voted(votinguserid int)
|
||||
RETURNS TABLE (
|
||||
url varchar,
|
||||
title varchar,
|
||||
requester varchar,
|
||||
imageUrl varchar,
|
||||
state varchar,
|
||||
score int,
|
||||
reqTimestamp timestamptz,
|
||||
voted bool
|
||||
)
|
||||
LANGUAGE SQL
|
||||
AS $$
|
||||
SELECT url,title,requester,imageUrl,state,score,reqTimestamp,
|
||||
(CASE WHEN votes.userid IS NULL THEN FALSE ELSE TRUE END) AS voted
|
||||
FROM requests_vw
|
||||
LEFT JOIN votes ON (requests_vw.url = votes.requesturl AND votes.userid = votinguserid)
|
||||
ORDER BY score DESC, reqTimestamp ASC;
|
||||
$$;
|
||||
|
||||
CREATE OR REPLACE PROCEDURE add_request(url varchar,requester int)
|
||||
LANGUAGE SQL
|
||||
AS $$
|
||||
INSERT INTO requests (url,requester) VALUES (url,requester);
|
||||
INSERT INTO requestMetadata (url) VALUES (url);
|
||||
INSERT INTO scores (url) VALUES (url);
|
||||
INSERT INTO votes (requesturl,userid) VALUES (url,requester);
|
||||
CALL update_scores();
|
||||
$$;
|
||||
|
||||
COMMIT;
|
Loading…
Reference in New Issue