修正分页
This commit is contained in:
@@ -442,19 +442,9 @@ func NewSchema(config Config) (graphql.Schema, error) {
|
|||||||
}
|
}
|
||||||
mapstructure.Decode(p.Args, &args)
|
mapstructure.Decode(p.Args, &args)
|
||||||
|
|
||||||
// 限制长度防止全表扫描
|
|
||||||
//var limit = 10
|
|
||||||
//if args.First != 0 {
|
|
||||||
// limit = args.First
|
|
||||||
//} else if args.Last != 0 {
|
|
||||||
// limit = args.Last
|
|
||||||
//}
|
|
||||||
|
|
||||||
var total int
|
var total int
|
||||||
var images []Image
|
var images []Image
|
||||||
//var query = db.Limit(limit).Table("web_images")
|
var query = goqu.Dialect("mysql").Select("web_images.id", goqu.L("ROW_NUMBER() OVER(ORDER BY id ASC)").As("row_num")).From("web_images")
|
||||||
//order := "ORDER BY " + p.Args["sort"].(string) + " " + p.Args["order"].(string)
|
|
||||||
var query = goqu.Dialect("mysql").Select("id", goqu.L("ROW_NUMBER() OVER(ORDER BY id ASC)").As("row_num")).From("web_images")
|
|
||||||
|
|
||||||
// 参数映射
|
// 参数映射
|
||||||
var argFormat = []string{"id", "width", "height", "content", "remark", "description", "tags", "rank", "comment_num", "praise_count", "collect_count", "article_id", "user_id"}
|
var argFormat = []string{"id", "width", "height", "content", "remark", "description", "tags", "rank", "comment_num", "praise_count", "collect_count", "article_id", "user_id"}
|
||||||
@@ -462,7 +452,6 @@ func NewSchema(config Config) (graphql.Schema, error) {
|
|||||||
// 筛选条件
|
// 筛选条件
|
||||||
for _, format := range argFormat {
|
for _, format := range argFormat {
|
||||||
if p.Args[format] != nil {
|
if p.Args[format] != nil {
|
||||||
//query = query.Where(fmt.Sprintf("web_images.%s = ?", format), p.Args[format])
|
|
||||||
query.Where(goqu.Ex{fmt.Sprintf("web_images.%s = ?", format): p.Args[format]})
|
query.Where(goqu.Ex{fmt.Sprintf("web_images.%s = ?", format): p.Args[format]})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -658,16 +647,23 @@ func NewSchema(config Config) (graphql.Schema, error) {
|
|||||||
// 取所有数据的前N条
|
// 取所有数据的前N条
|
||||||
var cursor string
|
var cursor string
|
||||||
if args.After != 0 {
|
if args.After != 0 {
|
||||||
cursor = fmt.Sprintf(`WHERE row_num > (SELECT row_num FROM RankedArticles WHERE id = %d)`, args.After)
|
cursor = fmt.Sprintf(`WHERE row_num > (SELECT row_num FROM RankedArticles WHERE RankedArticles.id = %d)`, args.After)
|
||||||
|
}
|
||||||
|
|
||||||
|
var limit int = 10
|
||||||
|
if args.First != 0 {
|
||||||
|
limit = args.First
|
||||||
|
} else if args.Last != 0 {
|
||||||
|
limit = args.Last
|
||||||
}
|
}
|
||||||
|
|
||||||
// 取大于游标的数据
|
// 取大于游标的数据
|
||||||
sql = fmt.Sprintf(`
|
sql = fmt.Sprintf(`
|
||||||
WITH RankedArticles AS (%s)
|
WITH RankedArticles AS (%s)
|
||||||
SELECT web_images.* FROM web_images JOIN(
|
SELECT web_images.* FROM web_images JOIN(
|
||||||
SELECT id FROM RankedArticles %s ORDER BY row_num LIMIT 5
|
SELECT RankedArticles.id FROM RankedArticles %s ORDER BY row_num LIMIT %d
|
||||||
) AS LimitedRanked ON web_images.id = LimitedRanked.id;
|
) AS LimitedRanked ON web_images.id = LimitedRanked.id;
|
||||||
`, sql, cursor)
|
`, sql, cursor, limit)
|
||||||
|
|
||||||
fmt.Println(sql)
|
fmt.Println(sql)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user