Skip to content

Commit e8e2c7c

Browse files
committed
feed filters + fix followee_reposts
1 parent e4ccb4f commit e8e2c7c

3 files changed

Lines changed: 21 additions & 14 deletions

File tree

api/dbv1/get_tracks.sql.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/dbv1/queries/get_tracks.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ SELECT
7070
FROM (
7171
SELECT user_id, repost_item_id, reposts.created_at
7272
FROM reposts
73-
JOIN follows ON followee_user_id = reposts.user_id AND follower_user_id = @my_id
73+
JOIN follows ON followee_user_id = reposts.user_id AND follower_user_id = @my_id AND follows.is_delete = false
7474
JOIN aggregate_user USING (user_id)
7575
WHERE repost_item_id = t.track_id
7676
AND repost_type = 'track'
@@ -92,7 +92,7 @@ SELECT
9292
FROM (
9393
SELECT user_id, save_item_id, saves.created_at
9494
FROM saves
95-
JOIN follows ON followee_user_id = saves.user_id AND follower_user_id = @my_id
95+
JOIN follows ON followee_user_id = saves.user_id AND follower_user_id = @my_id AND follows.is_delete = false
9696
JOIN aggregate_user USING (user_id)
9797
WHERE save_item_id = t.track_id
9898
AND save_type = 'track'

api/v1_users_feed.go

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,12 @@ import (
88
"github.com/jackc/pgx/v5"
99
)
1010

11-
// todo: some dedupe stuff
11+
// todo: time range beyond 30 days
12+
// - how + when to expand time range,
13+
// - how to de-dupe items from appearing twice when expanding time range... is tricky
1214
func (app *ApiServer) v1UsersFeed(c *fiber.Ctx) error {
1315
myId := app.getMyId(c)
16+
1417
sql := `
1518
WITH
1619
follow_set AS (
@@ -41,7 +44,8 @@ func (app *ApiServer) v1UsersFeed(c *fiber.Ctx) error {
4144
AND playlists.is_delete = false
4245
AND playlists.is_private = false
4346
WHERE
44-
reposts.created_at < @before
47+
@filter in ('all', 'repost')
48+
AND reposts.created_at < @before
4549
AND reposts.created_at >= @before - INTERVAL '30 DAYS'
4650
AND reposts.is_delete = false
4751
AND (tracks.track_id IS NOT NULL OR playlists.playlist_id IS NOT NULL)
@@ -57,11 +61,12 @@ func (app *ApiServer) v1UsersFeed(c *fiber.Ctx) error {
5761
created_at
5862
from tracks
5963
join follow_set on owner_id = user_id
60-
where created_at < @before
61-
and created_at >= @before::timestamp - INTERVAL '30 DAYS'
62-
and is_unlisted = false
63-
and is_delete = false
64-
and stem_of is null
64+
where @filter in ('all', 'original')
65+
AND created_at < @before
66+
AND created_at >= @before::timestamp - INTERVAL '30 DAYS'
67+
AND is_unlisted = false
68+
AND is_delete = false
69+
AND stem_of is null
6570
)
6671
6772
UNION ALL
@@ -73,9 +78,10 @@ func (app *ApiServer) v1UsersFeed(c *fiber.Ctx) error {
7378
created_at
7479
from playlists
7580
join follow_set on playlist_owner_id = user_id
76-
where created_at < @before
77-
and created_at >= @before - INTERVAL '30 DAYS'
78-
and is_delete = false
81+
where @filter in ('all', 'original')
82+
AND created_at < @before
83+
AND created_at >= @before - INTERVAL '30 DAYS'
84+
AND is_delete = false
7985
AND is_private = false
8086
)
8187
@@ -97,6 +103,7 @@ func (app *ApiServer) v1UsersFeed(c *fiber.Ctx) error {
97103
// "limit": c.Query("limit", "50"),
98104
"limit": 40,
99105
"offset": c.Query("offset", "0"),
106+
"filter": c.Query("filter", "all"), // original, repost
100107
})
101108
if err != nil {
102109
return err

0 commit comments

Comments
 (0)