aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Perry <avaglir@gmail.com>2019-03-30 05:46:48 -0400
committerNathan Perry <avaglir@gmail.com>2019-03-30 05:49:51 -0400
commit527212982c1b31bb003a15a667e9067fd426ad74 (patch)
treefbf7b45a06840203f79420b070ff53a55b302160
parente7e2daa560af199bd005a8526ebcf7ff4441e3ea (diff)
fix rarememe query to count memes that have not been invoked at all
-rw-r--r--src/db/mod.rs14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/db/mod.rs b/src/db/mod.rs
index c1d5ab0..b741d66 100644
--- a/src/db/mod.rs
+++ b/src/db/mod.rs
@@ -124,13 +124,13 @@ pub fn rare_meme(conn: &PgConnection, audio: bool) -> Result<Meme> {
let raw_conn = raw_connection()?;
let rows = raw_conn.query(r#"
- SELECT agg.meme_id, (agg.time_diff / agg.ct) AS play_prop, agg.ct FROM (
- SELECT meme_count.meme_id AS meme_id, meme_count.ct AS ct, EXTRACT(EPOCH FROM (now() - metadata.created)) AS time_diff FROM (
- SELECT meme_id, COUNT(*) AS ct FROM invocation_records GROUP BY meme_id
- ) AS meme_count
- INNER JOIN memes ON memes.id = meme_count.meme_id
- INNER JOIN metadata ON metadata.id = memes.metadata_id
- WHERE ((memes.audio_id IS NOT NULL) = $1) OR $2
+ SELECT agg.meme_id, (agg.time_diff / (agg.ct + 1)) AS play_prop, agg.ct FROM (
+ SELECT memes.id AS meme_id, COALESCE(meme_count.ct, 0) AS ct, EXTRACT(EPOCH FROM (now() - metadata.created)) AS time_diff FROM (
+ SELECT meme_id, COUNT(*) AS ct FROM invocation_records GROUP BY meme_id
+ ) AS meme_count
+ RIGHT JOIN memes ON memes.id = meme_count.meme_id
+ INNER JOIN metadata ON metadata.id = memes.metadata_id
+ WHERE (memes.audio_id IS NOT NULL) = ($1) OR ($2 IS TRUE)
) AS agg
ORDER BY play_prop DESC
LIMIT 100;