如果查询了 total 字段
This commit is contained in:
@@ -83,6 +83,16 @@ func generateGraphQLType(model interface{}) (*graphql.Object, error) {
|
|||||||
}), nil
|
}), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 判断指定字段是否存在
|
||||||
|
func existField(selections []ast.Selection, name string) bool {
|
||||||
|
for _, field := range selections {
|
||||||
|
if f, ok := field.(*ast.Field); ok && f.Name.Value == name {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func NewSchema(config Config) (graphql.Schema, error) {
|
func NewSchema(config Config) (graphql.Schema, error) {
|
||||||
|
|
||||||
if db, err = gorm.Open(mysql.Open(fmt.Sprintf(
|
if db, err = gorm.Open(mysql.Open(fmt.Sprintf(
|
||||||
@@ -571,11 +581,9 @@ func NewSchema(config Config) (graphql.Schema, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 如果查询了 total 字段
|
// 如果查询了 total 字段
|
||||||
if p.Info.FieldASTs[0].SelectionSet.Selections[1] != nil {
|
if existField(p.Info.FieldASTs[0].SelectionSet.Selections, "total") {
|
||||||
sql, _, _ := query.ToSQL()
|
sql, _, _ := query.ToSQL()
|
||||||
fmt.Println(sql)
|
|
||||||
sql = strings.Replace(sql, "SELECT *", "SELECT COUNT(*)", 1)
|
sql = strings.Replace(sql, "SELECT *", "SELECT COUNT(*)", 1)
|
||||||
fmt.Println(sql)
|
|
||||||
if err := db.Raw(sql).Scan(&total).Error; err != nil {
|
if err := db.Raw(sql).Scan(&total).Error; err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -1181,15 +1189,7 @@ func NewSchema(config Config) (graphql.Schema, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
existField := func(selections []ast.Selection, name string) bool {
|
// 如果查询了 total 字段
|
||||||
for _, field := range selections {
|
|
||||||
if f, ok := field.(*ast.Field); ok && f.Name.Value == name {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
if existField(p.Info.FieldASTs[0].SelectionSet.Selections, "total") {
|
if existField(p.Info.FieldASTs[0].SelectionSet.Selections, "total") {
|
||||||
sql, _, _ := query.ToSQL()
|
sql, _, _ := query.ToSQL()
|
||||||
sql = strings.Replace(sql, "SELECT *", "SELECT COUNT(*)", 1)
|
sql = strings.Replace(sql, "SELECT *", "SELECT COUNT(*)", 1)
|
||||||
|
Reference in New Issue
Block a user