-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathget_account_playlists.sql.go
More file actions
81 lines (75 loc) · 1.89 KB
/
get_account_playlists.sql.go
File metadata and controls
81 lines (75 loc) · 1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.28.0
// source: get_account_playlists.sql
package dbv1
import (
"context"
"time"
"bridgerton.audius.co/trashid"
"github.com/jackc/pgx/v5/pgtype"
)
const getAccountPlaylists = `-- name: GetAccountPlaylists :many
WITH playlist_ids AS (
SELECT save_item_id as id
FROM saves
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,
p.is_album,
-- p.permalink // TODO
p.playlist_name,
u.user_id,
u.handle,
u.is_deactivated,
p.created_at
FROM playlists p
JOIN users u ON p.playlist_owner_id = u.user_id
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 {
PlaylistID int32 `json:"playlist_id"`
IsAlbum bool `json:"is_album"`
PlaylistName pgtype.Text `json:"playlist_name"`
UserID trashid.HashId `json:"user_id"`
Handle pgtype.Text `json:"handle"`
IsDeactivated bool `json:"is_deactivated"`
CreatedAt time.Time `json:"created_at"`
}
func (q *Queries) GetAccountPlaylists(ctx context.Context, userID int32) ([]GetAccountPlaylistsRow, error) {
rows, err := q.db.Query(ctx, getAccountPlaylists, userID)
if err != nil {
return nil, err
}
defer rows.Close()
var items []GetAccountPlaylistsRow
for rows.Next() {
var i GetAccountPlaylistsRow
if err := rows.Scan(
&i.PlaylistID,
&i.IsAlbum,
&i.PlaylistName,
&i.UserID,
&i.Handle,
&i.IsDeactivated,
&i.CreatedAt,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}