/
qLists.sql.go
120 lines (102 loc) · 2.83 KB
/
qLists.sql.go
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.25.0
// source: qLists.sql
package db
import (
"context"
"github.com/google/uuid"
)
const countListsForUser = `-- name: CountListsForUser :one
SELECT COUNT(*)
FROM filter_lists
WHERE user_id = $1
`
func (q *Queries) CountListsForUser(ctx context.Context, userID string) (int64, error) {
row := q.db.QueryRow(ctx, countListsForUser, userID)
var count int64
err := row.Scan(&count)
return count, err
}
const createListForUser = `-- name: CreateListForUser :one
INSERT INTO filter_lists (user_id)
VALUES ($1)
RETURNING token
`
func (q *Queries) CreateListForUser(ctx context.Context, userID string) (uuid.UUID, error) {
row := q.db.QueryRow(ctx, createListForUser, userID)
var token uuid.UUID
err := row.Scan(&token)
return token, err
}
const getListForToken = `-- name: GetListForToken :one
SELECT fl.id,
fl.user_id,
(fl.downloaded_at IS NOT NULL)::bool as is_downloaded,
(SELECT max(coalesce(fi.updated_at, fi.created_at))
from filter_instances fi
where fi.list_id = fl.id) as last_updated
FROM filter_lists fl
WHERE token = $1
LIMIT 1
`
type GetListForTokenRow struct {
ID int32
UserID string
IsDownloaded bool
LastUpdated interface{}
}
func (q *Queries) GetListForToken(ctx context.Context, token uuid.UUID) (GetListForTokenRow, error) {
row := q.db.QueryRow(ctx, getListForToken, token)
var i GetListForTokenRow
err := row.Scan(
&i.ID,
&i.UserID,
&i.IsDownloaded,
&i.LastUpdated,
)
return i, err
}
const getListForUser = `-- name: GetListForUser :one
SELECT token,
(downloaded_at IS NOT NULL)::bool as is_downloaded,
(SELECT COUNT(*) FROM filter_instances WHERE filter_instances.user_id = $1) AS instance_count
FROM filter_lists
WHERE filter_lists.user_id = $1
LIMIT 1
`
type GetListForUserRow struct {
Token uuid.UUID
IsDownloaded bool
InstanceCount int64
}
func (q *Queries) GetListForUser(ctx context.Context, userID string) (GetListForUserRow, error) {
row := q.db.QueryRow(ctx, getListForUser, userID)
var i GetListForUserRow
err := row.Scan(&i.Token, &i.IsDownloaded, &i.InstanceCount)
return i, err
}
const markListDownloaded = `-- name: MarkListDownloaded :exec
UPDATE filter_lists
SET downloaded_at = NOW()
WHERE token = $1
`
func (q *Queries) MarkListDownloaded(ctx context.Context, token uuid.UUID) error {
_, err := q.db.Exec(ctx, markListDownloaded, token)
return err
}
const rotateListToken = `-- name: RotateListToken :exec
UPDATE filter_lists
SET token = gen_random_uuid(),
downloaded_at = NULL
WHERE user_id = $1
AND token = $2
`
type RotateListTokenParams struct {
UserID string
Token uuid.UUID
}
func (q *Queries) RotateListToken(ctx context.Context, arg RotateListTokenParams) error {
_, err := q.db.Exec(ctx, rotateListToken, arg.UserID, arg.Token)
return err
}