如果查询了 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