-49
db/mostliked/query.sql.go
-49
db/mostliked/query.sql.go
···
7
7
8
8
import (
9
9
"context"
10
-
"database/sql"
11
10
)
12
11
13
12
const insertLang = `-- name: InsertLang :exec
···
56
55
_, err := q.db.ExecContext(ctx, updateLikes, uri)
57
56
return err
58
57
}
59
-
60
-
const viewFeed = `-- name: ViewFeed :many
61
-
select posts.uri, create_ts, likes, lang
62
-
from posts
63
-
left join langs on posts.uri = langs.uri
64
-
order by likes desc
65
-
limit ? offset ?
66
-
`
67
-
68
-
type ViewFeedParams struct {
69
-
Limit int64
70
-
Offset int64
71
-
}
72
-
73
-
type ViewFeedRow struct {
74
-
Uri string
75
-
CreateTs int64
76
-
Likes int64
77
-
Lang sql.NullString
78
-
}
79
-
80
-
func (q *Queries) ViewFeed(ctx context.Context, arg ViewFeedParams) ([]ViewFeedRow, error) {
81
-
rows, err := q.db.QueryContext(ctx, viewFeed, arg.Limit, arg.Offset)
82
-
if err != nil {
83
-
return nil, err
84
-
}
85
-
defer rows.Close()
86
-
var items []ViewFeedRow
87
-
for rows.Next() {
88
-
var i ViewFeedRow
89
-
if err := rows.Scan(
90
-
&i.Uri,
91
-
&i.CreateTs,
92
-
&i.Likes,
93
-
&i.Lang,
94
-
); err != nil {
95
-
return nil, err
96
-
}
97
-
items = append(items, i)
98
-
}
99
-
if err := rows.Close(); err != nil {
100
-
return nil, err
101
-
}
102
-
if err := rows.Err(); err != nil {
103
-
return nil, err
104
-
}
105
-
return items, nil
106
-
}
-7
pkg/mostliked/query.sql
-7
pkg/mostliked/query.sql
···
9
9
10
10
-- name: TrimPosts :exec
11
11
delete from posts where create_ts < unixepoch('now', '-24 hours');
12
-
13
-
-- name: ViewFeed :many
14
-
select posts.uri, create_ts, likes, lang
15
-
from posts
16
-
left join langs on posts.uri = langs.uri
17
-
order by likes desc
18
-
limit ? offset ?;