A social RSS reader built on the AT Protocol. glean.at
glean atproto atmosphere rss feed social app
14
fork

Configure Feed

Select the types of activity you want to include in your feed.

Optimize recommendation query and remove unnecessary migration

+5 -14
+5 -7
internal/cluster/jaccard.go
··· 24 24 25 25 _, err = tx.ExecContext(ctx, ` 26 26 INSERT INTO user_article_recommendations (user_did, feed_url, article_url, score) 27 - SELECT target, l.feed_url, l.article_url, SUM(us.jaccard) AS score 27 + SELECT targets.target, l.feed_url, l.article_url, SUM(targets.jaccard) AS score 28 28 FROM ( 29 - SELECT us.user_a AS target, s.user_did AS peer 29 + SELECT us.user_a AS target, us.user_b AS peer, us.jaccard 30 30 FROM user_similarity us 31 31 WHERE us.jaccard > 0.2 32 32 UNION ALL 33 - SELECT us.user_b AS target, s.user_did AS peer 33 + SELECT us.user_b AS target, us.user_a AS peer, us.jaccard 34 34 FROM user_similarity us 35 35 WHERE us.jaccard > 0.2 36 36 ) targets 37 37 JOIN likes l ON l.author_did = targets.peer 38 - WHERE l.article_url NOT IN ( 39 - SELECT a.url FROM articles a 40 - JOIN subscriptions s ON a.feed_url = s.feed_url AND s.user_did = targets.target 41 - LEFT JOIN read_state r ON r.user_did = targets.target AND r.article_id = a.id 38 + WHERE NOT EXISTS ( 39 + SELECT 1 FROM subscriptions sub WHERE sub.user_did = targets.target AND sub.feed_url = l.feed_url 42 40 ) 43 41 AND NOT EXISTS ( 44 42 SELECT 1 FROM likes ul WHERE ul.author_did = targets.target AND ul.feed_url = l.feed_url AND ul.article_url = l.article_url
-7
internal/db/db.go
··· 161 161 } 162 162 } 163 163 164 - migrations := []string{ 165 - `ALTER TABLE feeds ADD COLUMN favicon_url TEXT`, 166 - } 167 - for _, m := range migrations { 168 - tx.Exec(m) 169 - } 170 - 171 164 return tx.Commit() 172 165 }