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