diff --git a/api/dbv1/get_account_playlists.sql.go b/api/dbv1/get_account_playlists.sql.go index dc879c1b..f529f0ed 100644 --- a/api/dbv1/get_account_playlists.sql.go +++ b/api/dbv1/get_account_playlists.sql.go @@ -14,13 +14,17 @@ import ( ) const getAccountPlaylists = `-- name: GetAccountPlaylists :many -WITH saved_playlists AS ( - SELECT save_item_id +WITH playlist_ids AS ( + SELECT save_item_id as id FROM saves - WHERE user_id = $1 - AND is_current = TRUE + WHERE saves.user_id = $1 AND is_delete = FALSE AND (save_type = 'playlist' OR save_type = 'album') + UNION + SELECT p.playlist_id AS id + FROM playlists p + WHERE p.is_delete = FALSE + AND p.playlist_owner_id = $1 ) SELECT p.playlist_id, @@ -33,20 +37,9 @@ SELECT p.created_at FROM playlists p JOIN users u ON p.playlist_owner_id = u.user_id -WHERE ( - -- Owned playlists - (p.is_current = TRUE - AND p.is_delete = FALSE - AND p.playlist_owner_id = $1) - - OR - - -- Saved playlists - (p.is_current = TRUE - AND p.is_delete = FALSE - AND p.playlist_id IN (SELECT save_item_id FROM saved_playlists)) -) -ORDER BY p.created_at DESC +WHERE p.is_delete = false + AND p.playlist_id IN (SELECT id FROM playlist_ids) +ORDER BY p.created_at DESC, p.playlist_id ASC ` type GetAccountPlaylistsRow struct { diff --git a/api/dbv1/queries/get_account_playlists.sql b/api/dbv1/queries/get_account_playlists.sql index b8fe6a40..72bafabd 100644 --- a/api/dbv1/queries/get_account_playlists.sql +++ b/api/dbv1/queries/get_account_playlists.sql @@ -1,11 +1,15 @@ -- name: GetAccountPlaylists :many -WITH saved_playlists AS ( - SELECT save_item_id +WITH playlist_ids AS ( + SELECT save_item_id as id FROM saves - WHERE user_id = @user_id - AND is_current = TRUE + WHERE saves.user_id = @user_id AND is_delete = FALSE AND (save_type = 'playlist' OR save_type = 'album') + UNION + SELECT p.playlist_id AS id + FROM playlists p + WHERE p.is_delete = FALSE + AND p.playlist_owner_id = @user_id ) SELECT p.playlist_id, @@ -18,17 +22,6 @@ SELECT p.created_at FROM playlists p JOIN users u ON p.playlist_owner_id = u.user_id -WHERE ( - -- Owned playlists - (p.is_current = TRUE - AND p.is_delete = FALSE - AND p.playlist_owner_id = @user_id) - - OR - - -- Saved playlists - (p.is_current = TRUE - AND p.is_delete = FALSE - AND p.playlist_id IN (SELECT save_item_id FROM saved_playlists)) -) -ORDER BY p.created_at DESC; +WHERE p.is_delete = false + AND p.playlist_id IN (SELECT id FROM playlist_ids) +ORDER BY p.created_at DESC, p.playlist_id ASC; diff --git a/api/v1_users_account_test.go b/api/v1_users_account_test.go index ecfd31ec..0eb61eb9 100644 --- a/api/v1_users_account_test.go +++ b/api/v1_users_account_test.go @@ -19,8 +19,12 @@ func TestGetUsersAccount(t *testing.T) { // Check playlists assert.Equal(t, 2, len(accountResponse.Data.Playlists)) - assert.Equal(t, "SecondAlbum", accountResponse.Data.Playlists[0].Name) - assert.Equal(t, true, accountResponse.Data.Playlists[0].IsAlbum) + assert.Equal(t, "First", accountResponse.Data.Playlists[0].Name) + assert.Equal(t, false, accountResponse.Data.Playlists[0].IsAlbum) + assert.Equal(t, "rayjacobson", accountResponse.Data.User.Handle.String) + + assert.Equal(t, "SecondAlbum", accountResponse.Data.Playlists[1].Name) + assert.Equal(t, true, accountResponse.Data.Playlists[1].IsAlbum) assert.Equal(t, "rayjacobson", accountResponse.Data.User.Handle.String) // Check playlist library