BEGIN; --UPDATE version SET minor = 5; 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(); $$; CREATE TABLE follows ( userid integer, PRIMARY KEY (userid) ); CREATE TABLE subscriptions ( userid integer, PRIMARY KEY (userid) ); CREATE OR REPLACE VIEW vote_score_vw AS WITH votepoints AS (SELECT normaluservotepoints, followervotepoints, subscribervotepoints FROM config) SELECT requests.url AS url, COUNT(votes.requesturl) AS count, COALESCE( SUM(CASE WHEN follows.userid IS NULL AND subscriptions.userid IS NULL THEN votepoints.normaluservotepoints WHEN follows.userid IS NOT NULL AND subscriptions.userid IS NULL THEN votepoints.followervotepoints WHEN subscriptions.userid IS NOT NULL THEN votepoints.subscribervotepoints END), 0 ) AS votescore FROM requests LEFT JOIN votes ON votes.requesturl = requests.url LEFT JOIN users on votes.userid = users.userid LEFT JOIN bans ON users.userid = bans.userid LEFT JOIN follows ON users.userid = follows.userid LEFT JOIN subscriptions ON users.userid = subscriptions.userid CROSS JOIN votepoints WHERE bans.userid IS NULL GROUP BY url; ALTER TABLE users DROP COLUMN isfollower, DROP COLUMN issubscriber; INSERT INTO cron (jobName,runInterval) VALUES ('processFollows','30 minutes'), ('processSubscriptions','30 minutes'); COMMIT;