+6
-1
cmd/feedweb/main.go
+6
-1
cmd/feedweb/main.go
···
43
limit = l
44
}
45
}
46
47
params := feeds.FeedgenParams{
48
Feed: req.Feed,
49
Limit: limit,
50
-
Cursor: req.Cursor,
51
Langs: parseLangs(c.Request().Header.Get("Accept-Language")),
52
}
53
feedFunc, ok := generators[req.Feed]
54
if !ok {
55
return c.String(http.StatusNotFound, "feed not found")
···
43
limit = l
44
}
45
}
46
+
var cursor string = "0"
47
+
if req.Cursor != "" {
48
+
cursor = req.Cursor
49
+
}
50
51
params := feeds.FeedgenParams{
52
Feed: req.Feed,
53
Limit: limit,
54
+
Cursor: cursor,
55
Langs: parseLangs(c.Request().Header.Get("Accept-Language")),
56
}
57
+
58
feedFunc, ok := generators[req.Feed]
59
if !ok {
60
return c.String(http.StatusNotFound, "feed not found")
+14
-12
pkg/mostliked/generator.go
+14
-12
pkg/mostliked/generator.go
···
34
}
35
fmt.Fprint(&query, " ) ")
36
}
37
-
if params.Cursor != "" {
38
-
fmt.Fprint(&query, " AND likes <= ? ")
39
-
queryParams = append(queryParams, params.Cursor)
40
-
}
41
fmt.Fprint(&query, "ORDER BY likes DESC, create_ts DESC ")
42
-
fmt.Fprint(&query, "LIMIT ?")
43
-
queryParams = append(queryParams, params.Limit+1)
44
45
rows, err := dbCnx.QueryContext(ctx, query.String(), queryParams...)
46
if err != nil {
···
76
var cursor string
77
posts := make([]*appbsky.FeedDefs_SkeletonFeedPost, 0, params.Limit)
78
79
-
for idx, row := range rows {
80
-
if idx+1 <= params.Limit {
81
-
posts = append(posts, &appbsky.FeedDefs_SkeletonFeedPost{Post: row.Uri})
82
-
}
83
-
cursor = strconv.Itoa(row.Likes)
84
}
85
86
skeleton := appbsky.FeedGetFeedSkeleton_Output{
87
Feed: posts,
88
}
89
90
-
if len(rows) == params.Limit {
91
skeleton.Cursor = &cursor
92
}
93
···
34
}
35
fmt.Fprint(&query, " ) ")
36
}
37
fmt.Fprint(&query, "ORDER BY likes DESC, create_ts DESC ")
38
+
fmt.Fprint(&query, "LIMIT ? OFFSET ?")
39
+
queryParams = append(queryParams, params.Limit, params.Cursor)
40
+
fmt.Println(query.String(), queryParams)
41
42
rows, err := dbCnx.QueryContext(ctx, query.String(), queryParams...)
43
if err != nil {
···
73
var cursor string
74
posts := make([]*appbsky.FeedDefs_SkeletonFeedPost, 0, params.Limit)
75
76
+
for _, row := range rows {
77
+
posts = append(posts, &appbsky.FeedDefs_SkeletonFeedPost{Post: row.Uri})
78
}
79
80
skeleton := appbsky.FeedGetFeedSkeleton_Output{
81
Feed: posts,
82
}
83
84
+
var offset int = 0
85
+
offset, err = strconv.Atoi(params.Cursor)
86
+
if err != nil {
87
+
log.Println("error converting cursor")
88
+
}
89
+
offset += len(posts)
90
+
cursor = strconv.Itoa(offset)
91
+
92
+
if len(posts) == params.Limit {
93
skeleton.Cursor = &cursor
94
}
95