53 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			PL/PgSQL
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			PL/PgSQL
		
	
	
	
	
	
| 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
 | |
| 					AND votes.userid IS NOT 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 bans ON votes.userid = bans.userid
 | |
| 		LEFT JOIN follows ON votes.userid = follows.userid
 | |
| 		LEFT JOIN subscriptions ON votes.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;
 |