@@ -29,9 +29,12 @@ func Execute(p ExecuteParams) (result *Result) {
29
29
if ctx == nil {
30
30
ctx = context .Background ()
31
31
}
32
+ handleExtensionsExecutionDidStart (& p )
32
33
33
34
resultChannel := make (chan * Result )
34
- result = & Result {}
35
+ result = & Result {
36
+ Extensions : map [string ]interface {}{},
37
+ }
35
38
36
39
go func (out chan <- * Result , done <- chan struct {}) {
37
40
defer func () {
@@ -63,6 +66,7 @@ func Execute(p ExecuteParams) (result *Result) {
63
66
Root : p .Root ,
64
67
Operation : exeContext .Operation ,
65
68
})
69
+
66
70
}(resultChannel , ctx .Done ())
67
71
68
72
select {
@@ -71,6 +75,9 @@ func Execute(p ExecuteParams) (result *Result) {
71
75
case r := <- resultChannel :
72
76
result = r
73
77
}
78
+
79
+ handleExtensionsExecutionEnded (& p )
80
+ result .addExtensionResults (& p )
74
81
return
75
82
}
76
83
@@ -266,6 +273,7 @@ func executeFields(p executeFieldsParams) *Result {
266
273
}
267
274
268
275
func executeSubFields (p executeFieldsParams ) map [string ]interface {} {
276
+
269
277
if p .Source == nil {
270
278
p .Source = map [string ]interface {}{}
271
279
}
@@ -620,13 +628,17 @@ func resolveField(eCtx *executionContext, parentType *Object, source interface{}
620
628
621
629
var resolveFnError error
622
630
631
+ handleExtensionsResolveFieldDidStart (eCtx .Schema .extensions , eCtx , & info )
632
+
623
633
result , resolveFnError = resolveFn (ResolveParams {
624
634
Source : source ,
625
635
Args : args ,
626
636
Info : info ,
627
637
Context : eCtx .Context ,
628
638
})
629
639
640
+ defer handleExtensionsResolveFieldEnded (eCtx .Schema .extensions , eCtx , & info )
641
+
630
642
if resolveFnError != nil {
631
643
panic (resolveFnError )
632
644
}
0 commit comments