···
appbsky "github.com/bluesky-social/indigo/api/bsky"
"github.com/edavis/bsky-feeds/pkg/feeds"
_ "github.com/mattn/go-sqlite3"
12
-
"github.com/sanggonlee/gosq"
···
func getPosts(ctx context.Context, dbCnx *sql.DB, params feeds.FeedgenParams) ([]PostRow, error) {
21
-
q, err := gosq.Execute(`
22
-
SELECT posts.uri, likes
23
-
FROM posts LEFT JOIN langs ON posts.uri = langs.uri
27
-
{{- range $index, $lang := .Langs }}
28
-
{{- if $index }} OR {{ end }} lang = ?
35
-
ORDER BY likes DESC, create_ts DESC
39
-
log.Println("error in sql template:", err)
45
-
for _, lang := range params.Langs {
46
-
queryParams = append(queryParams, lang.String())
23
+
var query strings.Builder
24
+
fmt.Fprint(&query, "SELECT posts.uri, likes FROM posts LEFT JOIN langs ON posts.uri = langs.uri")
25
+
if len(params.Langs) > 0 {
26
+
fmt.Fprint(&query, " WHERE ")
27
+
for idx, lang := range params.Langs {
29
+
fmt.Fprint(&query, " OR ")
31
+
fmt.Fprint(&query, " lang = ? ")
32
+
queryParams = append(queryParams, lang.String())
49
-
if params.Offset != "" {
50
-
queryParams = append(queryParams, params.Offset)
35
+
// TODO cursor/offset stuff
36
+
fmt.Fprint(&query, "ORDER BY likes DESC, create_ts DESC")
37
+
fmt.Fprint(&query, "LIMIT ?")
queryParams = append(queryParams, params.Limit)
55
-
log.Println(queryParams)
57
-
rows, err := dbCnx.QueryContext(ctx, q, queryParams...)
40
+
rows, err := dbCnx.QueryContext(ctx, q.String(), queryParams...)