如果查询了 total 字段
This commit is contained in:
		@@ -83,6 +83,16 @@ func generateGraphQLType(model interface{}) (*graphql.Object, error) {
 | 
			
		||||
	}), 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) {
 | 
			
		||||
 | 
			
		||||
	if db, err = gorm.Open(mysql.Open(fmt.Sprintf(
 | 
			
		||||
@@ -571,11 +581,9 @@ func NewSchema(config Config) (graphql.Schema, error) {
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				// 如果查询了 total 字段
 | 
			
		||||
				if p.Info.FieldASTs[0].SelectionSet.Selections[1] != nil {
 | 
			
		||||
				if existField(p.Info.FieldASTs[0].SelectionSet.Selections, "total") {
 | 
			
		||||
					sql, _, _ := query.ToSQL()
 | 
			
		||||
					fmt.Println(sql)
 | 
			
		||||
					sql = strings.Replace(sql, "SELECT *", "SELECT COUNT(*)", 1)
 | 
			
		||||
					fmt.Println(sql)
 | 
			
		||||
					if err := db.Raw(sql).Scan(&total).Error; err != nil {
 | 
			
		||||
						return nil, err
 | 
			
		||||
					}
 | 
			
		||||
@@ -1181,15 +1189,7 @@ func NewSchema(config Config) (graphql.Schema, error) {
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				existField := func(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
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				// 如果查询了 total 字段
 | 
			
		||||
				if existField(p.Info.FieldASTs[0].SelectionSet.Selections, "total") {
 | 
			
		||||
					sql, _, _ := query.ToSQL()
 | 
			
		||||
					sql = strings.Replace(sql, "SELECT *", "SELECT COUNT(*)", 1)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user