Skip to content

Commit d92ab88

Browse files
committed
improve get_account_playlists perf
1 parent 4316de9 commit d92ab88

3 files changed

Lines changed: 28 additions & 38 deletions

File tree

api/dbv1/get_account_playlists.sql.go

Lines changed: 11 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
-- name: GetAccountPlaylists :many
2-
WITH saved_playlists AS (
3-
SELECT save_item_id
2+
WITH playlist_ids AS (
3+
SELECT save_item_id as id
44
FROM saves
5-
WHERE user_id = @user_id
6-
AND is_current = TRUE
5+
WHERE saves.user_id = @user_id
76
AND is_delete = FALSE
87
AND (save_type = 'playlist' OR save_type = 'album')
8+
UNION
9+
SELECT p.playlist_id AS id
10+
FROM playlists p
11+
WHERE p.is_delete = FALSE
12+
AND p.playlist_owner_id = @user_id
913
)
1014
SELECT
1115
p.playlist_id,
@@ -18,17 +22,6 @@ SELECT
1822
p.created_at
1923
FROM playlists p
2024
JOIN users u ON p.playlist_owner_id = u.user_id
21-
WHERE (
22-
-- Owned playlists
23-
(p.is_current = TRUE
24-
AND p.is_delete = FALSE
25-
AND p.playlist_owner_id = @user_id)
26-
27-
OR
28-
29-
-- Saved playlists
30-
(p.is_current = TRUE
31-
AND p.is_delete = FALSE
32-
AND p.playlist_id IN (SELECT save_item_id FROM saved_playlists))
33-
)
34-
ORDER BY p.created_at DESC;
25+
WHERE p.is_delete = false
26+
AND p.playlist_id IN (SELECT id FROM playlist_ids)
27+
ORDER BY p.created_at DESC, p.playlist_id ASC;

api/v1_users_account_test.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,12 @@ func TestGetUsersAccount(t *testing.T) {
1919

2020
// Check playlists
2121
assert.Equal(t, 2, len(accountResponse.Data.Playlists))
22-
assert.Equal(t, "SecondAlbum", accountResponse.Data.Playlists[0].Name)
23-
assert.Equal(t, true, accountResponse.Data.Playlists[0].IsAlbum)
22+
assert.Equal(t, "First", accountResponse.Data.Playlists[0].Name)
23+
assert.Equal(t, false, accountResponse.Data.Playlists[0].IsAlbum)
24+
assert.Equal(t, "rayjacobson", accountResponse.Data.User.Handle.String)
25+
26+
assert.Equal(t, "SecondAlbum", accountResponse.Data.Playlists[1].Name)
27+
assert.Equal(t, true, accountResponse.Data.Playlists[1].IsAlbum)
2428
assert.Equal(t, "rayjacobson", accountResponse.Data.User.Handle.String)
2529

2630
// Check playlist library

0 commit comments

Comments
 (0)