55 lines
1.5 KiB
PL/PgSQL
55 lines
1.5 KiB
PL/PgSQL
CREATE OR REPLACE PROCEDURE update_scores()
|
|
LANGUAGE SQL
|
|
AS $$
|
|
UPDATE scores SET score = votescore + scoreModifier
|
|
FROM vote_score_vw
|
|
WHERE scores.url = vote_score_vw.url;
|
|
$$;
|
|
|
|
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();
|
|
$$;
|
|
|
|
CREATE OR REPLACE PROCEDURE clear_zero_votes()
|
|
LANGUAGE SQL
|
|
AS $$
|
|
DELETE FROM requests WHERE NOT EXISTS
|
|
(SELECT FROM votes WHERE requests.url = votes.requesturl);
|
|
$$;
|
|
|
|
CREATE OR REPLACE PROCEDURE add_vote(url varchar,voteuser int)
|
|
LANGUAGE SQL
|
|
AS $$
|
|
INSERT INTO votes (requesturl,userid) VALUES (url,voteuser);
|
|
CALL update_scores();
|
|
$$;
|
|
|
|
CREATE OR REPLACE PROCEDURE delete_vote(url varchar,voteuser int)
|
|
LANGUAGE SQL
|
|
AS $$
|
|
DELETE FROM votes WHERE requesturl = url AND userid = voteuser;
|
|
CALL update_scores();
|
|
CALL clear_zero_votes();
|
|
$$;
|
|
|
|
CREATE OR REPLACE PROCEDURE update_request_score_modifier(updateurl varchar, scoreDiff int)
|
|
LANGUAGE SQL
|
|
AS $$
|
|
UPDATE scores SET scoreModifier = scoreModifier + scoreDiff WHERE url = updateurl;
|
|
CALL update_scores();
|
|
$$;
|
|
|
|
CREATE OR REPLACE PROCEDURE update_vote_points(normaluser int, follower int, subscriber int)
|
|
LANGUAGE SQL
|
|
AS $$
|
|
UPDATE config SET normaluservotepoints = normaluser,
|
|
followervotepoints = follower, subscribervotepoints = subscriber;
|
|
CALL update_scores();
|
|
$$;
|