github.com/deliveroo/gqlgen@v0.7.2/example/todo/generated.go (about)

     1  // Code generated by github.com/99designs/gqlgen, DO NOT EDIT.
     2  
     3  package todo
     4  
     5  import (
     6  	"bytes"
     7  	"context"
     8  	"errors"
     9  	"strconv"
    10  	"sync"
    11  
    12  	"github.com/99designs/gqlgen/graphql"
    13  	"github.com/99designs/gqlgen/graphql/introspection"
    14  	"github.com/vektah/gqlparser"
    15  	"github.com/vektah/gqlparser/ast"
    16  )
    17  
    18  // NewExecutableSchema creates an ExecutableSchema from the ResolverRoot interface.
    19  func NewExecutableSchema(cfg Config) graphql.ExecutableSchema {
    20  	return &executableSchema{
    21  		resolvers:  cfg.Resolvers,
    22  		directives: cfg.Directives,
    23  		complexity: cfg.Complexity,
    24  	}
    25  }
    26  
    27  type Config struct {
    28  	Resolvers  ResolverRoot
    29  	Directives DirectiveRoot
    30  	Complexity ComplexityRoot
    31  }
    32  
    33  type ResolverRoot interface {
    34  	MyMutation() MyMutationResolver
    35  	MyQuery() MyQueryResolver
    36  }
    37  
    38  type DirectiveRoot struct {
    39  	HasRole func(ctx context.Context, obj interface{}, next graphql.Resolver, role Role) (res interface{}, err error)
    40  }
    41  
    42  type ComplexityRoot struct {
    43  	MyMutation struct {
    44  		CreateTodo func(childComplexity int, todo TodoInput) int
    45  		UpdateTodo func(childComplexity int, id int, changes map[string]interface{}) int
    46  	}
    47  
    48  	MyQuery struct {
    49  		Todo     func(childComplexity int, id int) int
    50  		LastTodo func(childComplexity int) int
    51  		Todos    func(childComplexity int) int
    52  	}
    53  
    54  	Todo struct {
    55  		Id   func(childComplexity int) int
    56  		Text func(childComplexity int) int
    57  		Done func(childComplexity int) int
    58  	}
    59  }
    60  
    61  type MyMutationResolver interface {
    62  	CreateTodo(ctx context.Context, todo TodoInput) (Todo, error)
    63  	UpdateTodo(ctx context.Context, id int, changes map[string]interface{}) (*Todo, error)
    64  }
    65  type MyQueryResolver interface {
    66  	Todo(ctx context.Context, id int) (*Todo, error)
    67  	LastTodo(ctx context.Context) (*Todo, error)
    68  	Todos(ctx context.Context) ([]Todo, error)
    69  }
    70  
    71  func field_MyMutation_createTodo_args(rawArgs map[string]interface{}) (map[string]interface{}, error) {
    72  	args := map[string]interface{}{}
    73  	var arg0 TodoInput
    74  	if tmp, ok := rawArgs["todo"]; ok {
    75  		var err error
    76  		arg0, err = UnmarshalTodoInput(tmp)
    77  		if err != nil {
    78  			return nil, err
    79  		}
    80  	}
    81  	args["todo"] = arg0
    82  	return args, nil
    83  
    84  }
    85  
    86  func field_MyMutation_updateTodo_args(rawArgs map[string]interface{}) (map[string]interface{}, error) {
    87  	args := map[string]interface{}{}
    88  	var arg0 int
    89  	if tmp, ok := rawArgs["id"]; ok {
    90  		var err error
    91  		arg0, err = graphql.UnmarshalInt(tmp)
    92  		if err != nil {
    93  			return nil, err
    94  		}
    95  	}
    96  	args["id"] = arg0
    97  	var arg1 map[string]interface{}
    98  	if tmp, ok := rawArgs["changes"]; ok {
    99  		var err error
   100  		arg1 = tmp.(map[string]interface{})
   101  		if err != nil {
   102  			return nil, err
   103  		}
   104  	}
   105  	args["changes"] = arg1
   106  	return args, nil
   107  
   108  }
   109  
   110  func field_MyQuery_todo_args(rawArgs map[string]interface{}) (map[string]interface{}, error) {
   111  	args := map[string]interface{}{}
   112  	var arg0 int
   113  	if tmp, ok := rawArgs["id"]; ok {
   114  		var err error
   115  		arg0, err = graphql.UnmarshalInt(tmp)
   116  		if err != nil {
   117  			return nil, err
   118  		}
   119  	}
   120  	args["id"] = arg0
   121  	return args, nil
   122  
   123  }
   124  
   125  func field_MyQuery___type_args(rawArgs map[string]interface{}) (map[string]interface{}, error) {
   126  	args := map[string]interface{}{}
   127  	var arg0 string
   128  	if tmp, ok := rawArgs["name"]; ok {
   129  		var err error
   130  		arg0, err = graphql.UnmarshalString(tmp)
   131  		if err != nil {
   132  			return nil, err
   133  		}
   134  	}
   135  	args["name"] = arg0
   136  	return args, nil
   137  
   138  }
   139  
   140  func field___Type_fields_args(rawArgs map[string]interface{}) (map[string]interface{}, error) {
   141  	args := map[string]interface{}{}
   142  	var arg0 bool
   143  	if tmp, ok := rawArgs["includeDeprecated"]; ok {
   144  		var err error
   145  		arg0, err = graphql.UnmarshalBoolean(tmp)
   146  		if err != nil {
   147  			return nil, err
   148  		}
   149  	}
   150  	args["includeDeprecated"] = arg0
   151  	return args, nil
   152  
   153  }
   154  
   155  func field___Type_enumValues_args(rawArgs map[string]interface{}) (map[string]interface{}, error) {
   156  	args := map[string]interface{}{}
   157  	var arg0 bool
   158  	if tmp, ok := rawArgs["includeDeprecated"]; ok {
   159  		var err error
   160  		arg0, err = graphql.UnmarshalBoolean(tmp)
   161  		if err != nil {
   162  			return nil, err
   163  		}
   164  	}
   165  	args["includeDeprecated"] = arg0
   166  	return args, nil
   167  
   168  }
   169  
   170  func dir_hasRole_args(rawArgs map[string]interface{}) (map[string]interface{}, error) {
   171  	args := map[string]interface{}{}
   172  	var arg0 Role
   173  	if tmp, ok := rawArgs["role"]; ok {
   174  		var err error
   175  		err = (&arg0).UnmarshalGQL(tmp)
   176  		if err != nil {
   177  			return nil, err
   178  		}
   179  	}
   180  	args["role"] = arg0
   181  	return args, nil
   182  
   183  }
   184  
   185  type executableSchema struct {
   186  	resolvers  ResolverRoot
   187  	directives DirectiveRoot
   188  	complexity ComplexityRoot
   189  }
   190  
   191  func (e *executableSchema) Schema() *ast.Schema {
   192  	return parsedSchema
   193  }
   194  
   195  func (e *executableSchema) Complexity(typeName, field string, childComplexity int, rawArgs map[string]interface{}) (int, bool) {
   196  	switch typeName + "." + field {
   197  
   198  	case "MyMutation.createTodo":
   199  		if e.complexity.MyMutation.CreateTodo == nil {
   200  			break
   201  		}
   202  
   203  		args, err := field_MyMutation_createTodo_args(rawArgs)
   204  		if err != nil {
   205  			return 0, false
   206  		}
   207  
   208  		return e.complexity.MyMutation.CreateTodo(childComplexity, args["todo"].(TodoInput)), true
   209  
   210  	case "MyMutation.updateTodo":
   211  		if e.complexity.MyMutation.UpdateTodo == nil {
   212  			break
   213  		}
   214  
   215  		args, err := field_MyMutation_updateTodo_args(rawArgs)
   216  		if err != nil {
   217  			return 0, false
   218  		}
   219  
   220  		return e.complexity.MyMutation.UpdateTodo(childComplexity, args["id"].(int), args["changes"].(map[string]interface{})), true
   221  
   222  	case "MyQuery.todo":
   223  		if e.complexity.MyQuery.Todo == nil {
   224  			break
   225  		}
   226  
   227  		args, err := field_MyQuery_todo_args(rawArgs)
   228  		if err != nil {
   229  			return 0, false
   230  		}
   231  
   232  		return e.complexity.MyQuery.Todo(childComplexity, args["id"].(int)), true
   233  
   234  	case "MyQuery.lastTodo":
   235  		if e.complexity.MyQuery.LastTodo == nil {
   236  			break
   237  		}
   238  
   239  		return e.complexity.MyQuery.LastTodo(childComplexity), true
   240  
   241  	case "MyQuery.todos":
   242  		if e.complexity.MyQuery.Todos == nil {
   243  			break
   244  		}
   245  
   246  		return e.complexity.MyQuery.Todos(childComplexity), true
   247  
   248  	case "Todo.id":
   249  		if e.complexity.Todo.Id == nil {
   250  			break
   251  		}
   252  
   253  		return e.complexity.Todo.Id(childComplexity), true
   254  
   255  	case "Todo.text":
   256  		if e.complexity.Todo.Text == nil {
   257  			break
   258  		}
   259  
   260  		return e.complexity.Todo.Text(childComplexity), true
   261  
   262  	case "Todo.done":
   263  		if e.complexity.Todo.Done == nil {
   264  			break
   265  		}
   266  
   267  		return e.complexity.Todo.Done(childComplexity), true
   268  
   269  	}
   270  	return 0, false
   271  }
   272  
   273  func (e *executableSchema) Query(ctx context.Context, op *ast.OperationDefinition) *graphql.Response {
   274  	ec := executionContext{graphql.GetRequestContext(ctx), e}
   275  
   276  	buf := ec.RequestMiddleware(ctx, func(ctx context.Context) []byte {
   277  		data := ec._MyQuery(ctx, op.SelectionSet)
   278  		var buf bytes.Buffer
   279  		data.MarshalGQL(&buf)
   280  		return buf.Bytes()
   281  	})
   282  
   283  	return &graphql.Response{
   284  		Data:       buf,
   285  		Errors:     ec.Errors,
   286  		Extensions: ec.Extensions}
   287  }
   288  
   289  func (e *executableSchema) Mutation(ctx context.Context, op *ast.OperationDefinition) *graphql.Response {
   290  	ec := executionContext{graphql.GetRequestContext(ctx), e}
   291  
   292  	buf := ec.RequestMiddleware(ctx, func(ctx context.Context) []byte {
   293  		data := ec._MyMutation(ctx, op.SelectionSet)
   294  		var buf bytes.Buffer
   295  		data.MarshalGQL(&buf)
   296  		return buf.Bytes()
   297  	})
   298  
   299  	return &graphql.Response{
   300  		Data:       buf,
   301  		Errors:     ec.Errors,
   302  		Extensions: ec.Extensions,
   303  	}
   304  }
   305  
   306  func (e *executableSchema) Subscription(ctx context.Context, op *ast.OperationDefinition) func() *graphql.Response {
   307  	return graphql.OneShot(graphql.ErrorResponse(ctx, "subscriptions are not supported"))
   308  }
   309  
   310  type executionContext struct {
   311  	*graphql.RequestContext
   312  	*executableSchema
   313  }
   314  
   315  var myMutationImplementors = []string{"MyMutation"}
   316  
   317  // nolint: gocyclo, errcheck, gas, goconst
   318  func (ec *executionContext) _MyMutation(ctx context.Context, sel ast.SelectionSet) graphql.Marshaler {
   319  	fields := graphql.CollectFields(ctx, sel, myMutationImplementors)
   320  
   321  	ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{
   322  		Object: "MyMutation",
   323  	})
   324  
   325  	out := graphql.NewOrderedMap(len(fields))
   326  	invalid := false
   327  	for i, field := range fields {
   328  		out.Keys[i] = field.Alias
   329  
   330  		switch field.Name {
   331  		case "__typename":
   332  			out.Values[i] = graphql.MarshalString("MyMutation")
   333  		case "createTodo":
   334  			out.Values[i] = ec._MyMutation_createTodo(ctx, field)
   335  			if out.Values[i] == graphql.Null {
   336  				invalid = true
   337  			}
   338  		case "updateTodo":
   339  			out.Values[i] = ec._MyMutation_updateTodo(ctx, field)
   340  		default:
   341  			panic("unknown field " + strconv.Quote(field.Name))
   342  		}
   343  	}
   344  
   345  	if invalid {
   346  		return graphql.Null
   347  	}
   348  	return out
   349  }
   350  
   351  // nolint: vetshadow
   352  func (ec *executionContext) _MyMutation_createTodo(ctx context.Context, field graphql.CollectedField) graphql.Marshaler {
   353  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
   354  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
   355  	rawArgs := field.ArgumentMap(ec.Variables)
   356  	args, err := field_MyMutation_createTodo_args(rawArgs)
   357  	if err != nil {
   358  		ec.Error(ctx, err)
   359  		return graphql.Null
   360  	}
   361  	rctx := &graphql.ResolverContext{
   362  		Object: "MyMutation",
   363  		Args:   args,
   364  		Field:  field,
   365  	}
   366  	ctx = graphql.WithResolverContext(ctx, rctx)
   367  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
   368  	resTmp := ec.FieldMiddleware(ctx, nil, func(rctx context.Context) (interface{}, error) {
   369  		ctx = rctx // use context from middleware stack in children
   370  		return ec.resolvers.MyMutation().CreateTodo(rctx, args["todo"].(TodoInput))
   371  	})
   372  	if resTmp == nil {
   373  		if !ec.HasError(rctx) {
   374  			ec.Errorf(ctx, "must not be null")
   375  		}
   376  		return graphql.Null
   377  	}
   378  	res := resTmp.(Todo)
   379  	rctx.Result = res
   380  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
   381  
   382  	return ec._Todo(ctx, field.Selections, &res)
   383  }
   384  
   385  // nolint: vetshadow
   386  func (ec *executionContext) _MyMutation_updateTodo(ctx context.Context, field graphql.CollectedField) graphql.Marshaler {
   387  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
   388  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
   389  	rawArgs := field.ArgumentMap(ec.Variables)
   390  	args, err := field_MyMutation_updateTodo_args(rawArgs)
   391  	if err != nil {
   392  		ec.Error(ctx, err)
   393  		return graphql.Null
   394  	}
   395  	rctx := &graphql.ResolverContext{
   396  		Object: "MyMutation",
   397  		Args:   args,
   398  		Field:  field,
   399  	}
   400  	ctx = graphql.WithResolverContext(ctx, rctx)
   401  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
   402  	resTmp := ec.FieldMiddleware(ctx, nil, func(rctx context.Context) (interface{}, error) {
   403  		ctx = rctx // use context from middleware stack in children
   404  		return ec.resolvers.MyMutation().UpdateTodo(rctx, args["id"].(int), args["changes"].(map[string]interface{}))
   405  	})
   406  	if resTmp == nil {
   407  		return graphql.Null
   408  	}
   409  	res := resTmp.(*Todo)
   410  	rctx.Result = res
   411  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
   412  
   413  	if res == nil {
   414  		return graphql.Null
   415  	}
   416  
   417  	return ec._Todo(ctx, field.Selections, res)
   418  }
   419  
   420  var myQueryImplementors = []string{"MyQuery"}
   421  
   422  // nolint: gocyclo, errcheck, gas, goconst
   423  func (ec *executionContext) _MyQuery(ctx context.Context, sel ast.SelectionSet) graphql.Marshaler {
   424  	fields := graphql.CollectFields(ctx, sel, myQueryImplementors)
   425  
   426  	ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{
   427  		Object: "MyQuery",
   428  	})
   429  
   430  	var wg sync.WaitGroup
   431  	out := graphql.NewOrderedMap(len(fields))
   432  	invalid := false
   433  	for i, field := range fields {
   434  		out.Keys[i] = field.Alias
   435  
   436  		switch field.Name {
   437  		case "__typename":
   438  			out.Values[i] = graphql.MarshalString("MyQuery")
   439  		case "todo":
   440  			wg.Add(1)
   441  			go func(i int, field graphql.CollectedField) {
   442  				out.Values[i] = ec._MyQuery_todo(ctx, field)
   443  				wg.Done()
   444  			}(i, field)
   445  		case "lastTodo":
   446  			wg.Add(1)
   447  			go func(i int, field graphql.CollectedField) {
   448  				out.Values[i] = ec._MyQuery_lastTodo(ctx, field)
   449  				wg.Done()
   450  			}(i, field)
   451  		case "todos":
   452  			wg.Add(1)
   453  			go func(i int, field graphql.CollectedField) {
   454  				out.Values[i] = ec._MyQuery_todos(ctx, field)
   455  				if out.Values[i] == graphql.Null {
   456  					invalid = true
   457  				}
   458  				wg.Done()
   459  			}(i, field)
   460  		case "__type":
   461  			out.Values[i] = ec._MyQuery___type(ctx, field)
   462  		case "__schema":
   463  			out.Values[i] = ec._MyQuery___schema(ctx, field)
   464  		default:
   465  			panic("unknown field " + strconv.Quote(field.Name))
   466  		}
   467  	}
   468  	wg.Wait()
   469  	if invalid {
   470  		return graphql.Null
   471  	}
   472  	return out
   473  }
   474  
   475  // nolint: vetshadow
   476  func (ec *executionContext) _MyQuery_todo(ctx context.Context, field graphql.CollectedField) graphql.Marshaler {
   477  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
   478  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
   479  	rawArgs := field.ArgumentMap(ec.Variables)
   480  	args, err := field_MyQuery_todo_args(rawArgs)
   481  	if err != nil {
   482  		ec.Error(ctx, err)
   483  		return graphql.Null
   484  	}
   485  	rctx := &graphql.ResolverContext{
   486  		Object: "MyQuery",
   487  		Args:   args,
   488  		Field:  field,
   489  	}
   490  	ctx = graphql.WithResolverContext(ctx, rctx)
   491  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
   492  	resTmp := ec.FieldMiddleware(ctx, nil, func(rctx context.Context) (interface{}, error) {
   493  		ctx = rctx // use context from middleware stack in children
   494  		return ec.resolvers.MyQuery().Todo(rctx, args["id"].(int))
   495  	})
   496  	if resTmp == nil {
   497  		return graphql.Null
   498  	}
   499  	res := resTmp.(*Todo)
   500  	rctx.Result = res
   501  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
   502  
   503  	if res == nil {
   504  		return graphql.Null
   505  	}
   506  
   507  	return ec._Todo(ctx, field.Selections, res)
   508  }
   509  
   510  // nolint: vetshadow
   511  func (ec *executionContext) _MyQuery_lastTodo(ctx context.Context, field graphql.CollectedField) graphql.Marshaler {
   512  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
   513  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
   514  	rctx := &graphql.ResolverContext{
   515  		Object: "MyQuery",
   516  		Args:   nil,
   517  		Field:  field,
   518  	}
   519  	ctx = graphql.WithResolverContext(ctx, rctx)
   520  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
   521  	resTmp := ec.FieldMiddleware(ctx, nil, func(rctx context.Context) (interface{}, error) {
   522  		ctx = rctx // use context from middleware stack in children
   523  		return ec.resolvers.MyQuery().LastTodo(rctx)
   524  	})
   525  	if resTmp == nil {
   526  		return graphql.Null
   527  	}
   528  	res := resTmp.(*Todo)
   529  	rctx.Result = res
   530  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
   531  
   532  	if res == nil {
   533  		return graphql.Null
   534  	}
   535  
   536  	return ec._Todo(ctx, field.Selections, res)
   537  }
   538  
   539  // nolint: vetshadow
   540  func (ec *executionContext) _MyQuery_todos(ctx context.Context, field graphql.CollectedField) graphql.Marshaler {
   541  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
   542  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
   543  	rctx := &graphql.ResolverContext{
   544  		Object: "MyQuery",
   545  		Args:   nil,
   546  		Field:  field,
   547  	}
   548  	ctx = graphql.WithResolverContext(ctx, rctx)
   549  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
   550  	resTmp := ec.FieldMiddleware(ctx, nil, func(rctx context.Context) (interface{}, error) {
   551  		ctx = rctx // use context from middleware stack in children
   552  		return ec.resolvers.MyQuery().Todos(rctx)
   553  	})
   554  	if resTmp == nil {
   555  		if !ec.HasError(rctx) {
   556  			ec.Errorf(ctx, "must not be null")
   557  		}
   558  		return graphql.Null
   559  	}
   560  	res := resTmp.([]Todo)
   561  	rctx.Result = res
   562  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
   563  
   564  	arr1 := make(graphql.Array, len(res))
   565  	var wg sync.WaitGroup
   566  
   567  	isLen1 := len(res) == 1
   568  	if !isLen1 {
   569  		wg.Add(len(res))
   570  	}
   571  
   572  	for idx1 := range res {
   573  		idx1 := idx1
   574  		rctx := &graphql.ResolverContext{
   575  			Index:  &idx1,
   576  			Result: &res[idx1],
   577  		}
   578  		ctx := graphql.WithResolverContext(ctx, rctx)
   579  		f := func(idx1 int) {
   580  			if !isLen1 {
   581  				defer wg.Done()
   582  			}
   583  			arr1[idx1] = func() graphql.Marshaler {
   584  
   585  				return ec._Todo(ctx, field.Selections, &res[idx1])
   586  			}()
   587  		}
   588  		if isLen1 {
   589  			f(idx1)
   590  		} else {
   591  			go f(idx1)
   592  		}
   593  
   594  	}
   595  	wg.Wait()
   596  	return arr1
   597  }
   598  
   599  // nolint: vetshadow
   600  func (ec *executionContext) _MyQuery___type(ctx context.Context, field graphql.CollectedField) graphql.Marshaler {
   601  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
   602  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
   603  	rawArgs := field.ArgumentMap(ec.Variables)
   604  	args, err := field_MyQuery___type_args(rawArgs)
   605  	if err != nil {
   606  		ec.Error(ctx, err)
   607  		return graphql.Null
   608  	}
   609  	rctx := &graphql.ResolverContext{
   610  		Object: "MyQuery",
   611  		Args:   args,
   612  		Field:  field,
   613  	}
   614  	ctx = graphql.WithResolverContext(ctx, rctx)
   615  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
   616  	resTmp := ec.FieldMiddleware(ctx, nil, func(rctx context.Context) (interface{}, error) {
   617  		ctx = rctx // use context from middleware stack in children
   618  		return ec.introspectType(args["name"].(string))
   619  	})
   620  	if resTmp == nil {
   621  		return graphql.Null
   622  	}
   623  	res := resTmp.(*introspection.Type)
   624  	rctx.Result = res
   625  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
   626  
   627  	if res == nil {
   628  		return graphql.Null
   629  	}
   630  
   631  	return ec.___Type(ctx, field.Selections, res)
   632  }
   633  
   634  // nolint: vetshadow
   635  func (ec *executionContext) _MyQuery___schema(ctx context.Context, field graphql.CollectedField) graphql.Marshaler {
   636  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
   637  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
   638  	rctx := &graphql.ResolverContext{
   639  		Object: "MyQuery",
   640  		Args:   nil,
   641  		Field:  field,
   642  	}
   643  	ctx = graphql.WithResolverContext(ctx, rctx)
   644  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
   645  	resTmp := ec.FieldMiddleware(ctx, nil, func(rctx context.Context) (interface{}, error) {
   646  		ctx = rctx // use context from middleware stack in children
   647  		return ec.introspectSchema()
   648  	})
   649  	if resTmp == nil {
   650  		return graphql.Null
   651  	}
   652  	res := resTmp.(*introspection.Schema)
   653  	rctx.Result = res
   654  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
   655  
   656  	if res == nil {
   657  		return graphql.Null
   658  	}
   659  
   660  	return ec.___Schema(ctx, field.Selections, res)
   661  }
   662  
   663  var todoImplementors = []string{"Todo"}
   664  
   665  // nolint: gocyclo, errcheck, gas, goconst
   666  func (ec *executionContext) _Todo(ctx context.Context, sel ast.SelectionSet, obj *Todo) graphql.Marshaler {
   667  	fields := graphql.CollectFields(ctx, sel, todoImplementors)
   668  
   669  	out := graphql.NewOrderedMap(len(fields))
   670  	invalid := false
   671  	for i, field := range fields {
   672  		out.Keys[i] = field.Alias
   673  
   674  		switch field.Name {
   675  		case "__typename":
   676  			out.Values[i] = graphql.MarshalString("Todo")
   677  		case "id":
   678  			out.Values[i] = ec._Todo_id(ctx, field, obj)
   679  			if out.Values[i] == graphql.Null {
   680  				invalid = true
   681  			}
   682  		case "text":
   683  			out.Values[i] = ec._Todo_text(ctx, field, obj)
   684  			if out.Values[i] == graphql.Null {
   685  				invalid = true
   686  			}
   687  		case "done":
   688  			out.Values[i] = ec._Todo_done(ctx, field, obj)
   689  			if out.Values[i] == graphql.Null {
   690  				invalid = true
   691  			}
   692  		default:
   693  			panic("unknown field " + strconv.Quote(field.Name))
   694  		}
   695  	}
   696  
   697  	if invalid {
   698  		return graphql.Null
   699  	}
   700  	return out
   701  }
   702  
   703  // nolint: vetshadow
   704  func (ec *executionContext) _Todo_id(ctx context.Context, field graphql.CollectedField, obj *Todo) graphql.Marshaler {
   705  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
   706  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
   707  	rctx := &graphql.ResolverContext{
   708  		Object: "Todo",
   709  		Args:   nil,
   710  		Field:  field,
   711  	}
   712  	ctx = graphql.WithResolverContext(ctx, rctx)
   713  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
   714  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
   715  		ctx = rctx // use context from middleware stack in children
   716  		return obj.ID, nil
   717  	})
   718  	if resTmp == nil {
   719  		if !ec.HasError(rctx) {
   720  			ec.Errorf(ctx, "must not be null")
   721  		}
   722  		return graphql.Null
   723  	}
   724  	res := resTmp.(int)
   725  	rctx.Result = res
   726  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
   727  	return graphql.MarshalInt(res)
   728  }
   729  
   730  // nolint: vetshadow
   731  func (ec *executionContext) _Todo_text(ctx context.Context, field graphql.CollectedField, obj *Todo) graphql.Marshaler {
   732  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
   733  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
   734  	rctx := &graphql.ResolverContext{
   735  		Object: "Todo",
   736  		Args:   nil,
   737  		Field:  field,
   738  	}
   739  	ctx = graphql.WithResolverContext(ctx, rctx)
   740  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
   741  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
   742  		ctx = rctx // use context from middleware stack in children
   743  		return obj.Text, nil
   744  	})
   745  	if resTmp == nil {
   746  		if !ec.HasError(rctx) {
   747  			ec.Errorf(ctx, "must not be null")
   748  		}
   749  		return graphql.Null
   750  	}
   751  	res := resTmp.(string)
   752  	rctx.Result = res
   753  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
   754  	return graphql.MarshalString(res)
   755  }
   756  
   757  // nolint: vetshadow
   758  func (ec *executionContext) _Todo_done(ctx context.Context, field graphql.CollectedField, obj *Todo) graphql.Marshaler {
   759  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
   760  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
   761  	rctx := &graphql.ResolverContext{
   762  		Object: "Todo",
   763  		Args:   nil,
   764  		Field:  field,
   765  	}
   766  	ctx = graphql.WithResolverContext(ctx, rctx)
   767  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
   768  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
   769  		ctx = rctx // use context from middleware stack in children
   770  		return obj.Done, nil
   771  	})
   772  	if resTmp == nil {
   773  		if !ec.HasError(rctx) {
   774  			ec.Errorf(ctx, "must not be null")
   775  		}
   776  		return graphql.Null
   777  	}
   778  	res := resTmp.(bool)
   779  	rctx.Result = res
   780  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
   781  	return graphql.MarshalBoolean(res)
   782  }
   783  
   784  var __DirectiveImplementors = []string{"__Directive"}
   785  
   786  // nolint: gocyclo, errcheck, gas, goconst
   787  func (ec *executionContext) ___Directive(ctx context.Context, sel ast.SelectionSet, obj *introspection.Directive) graphql.Marshaler {
   788  	fields := graphql.CollectFields(ctx, sel, __DirectiveImplementors)
   789  
   790  	out := graphql.NewOrderedMap(len(fields))
   791  	invalid := false
   792  	for i, field := range fields {
   793  		out.Keys[i] = field.Alias
   794  
   795  		switch field.Name {
   796  		case "__typename":
   797  			out.Values[i] = graphql.MarshalString("__Directive")
   798  		case "name":
   799  			out.Values[i] = ec.___Directive_name(ctx, field, obj)
   800  			if out.Values[i] == graphql.Null {
   801  				invalid = true
   802  			}
   803  		case "description":
   804  			out.Values[i] = ec.___Directive_description(ctx, field, obj)
   805  		case "locations":
   806  			out.Values[i] = ec.___Directive_locations(ctx, field, obj)
   807  			if out.Values[i] == graphql.Null {
   808  				invalid = true
   809  			}
   810  		case "args":
   811  			out.Values[i] = ec.___Directive_args(ctx, field, obj)
   812  			if out.Values[i] == graphql.Null {
   813  				invalid = true
   814  			}
   815  		default:
   816  			panic("unknown field " + strconv.Quote(field.Name))
   817  		}
   818  	}
   819  
   820  	if invalid {
   821  		return graphql.Null
   822  	}
   823  	return out
   824  }
   825  
   826  // nolint: vetshadow
   827  func (ec *executionContext) ___Directive_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler {
   828  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
   829  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
   830  	rctx := &graphql.ResolverContext{
   831  		Object: "__Directive",
   832  		Args:   nil,
   833  		Field:  field,
   834  	}
   835  	ctx = graphql.WithResolverContext(ctx, rctx)
   836  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
   837  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
   838  		ctx = rctx // use context from middleware stack in children
   839  		return obj.Name, nil
   840  	})
   841  	if resTmp == nil {
   842  		if !ec.HasError(rctx) {
   843  			ec.Errorf(ctx, "must not be null")
   844  		}
   845  		return graphql.Null
   846  	}
   847  	res := resTmp.(string)
   848  	rctx.Result = res
   849  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
   850  	return graphql.MarshalString(res)
   851  }
   852  
   853  // nolint: vetshadow
   854  func (ec *executionContext) ___Directive_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler {
   855  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
   856  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
   857  	rctx := &graphql.ResolverContext{
   858  		Object: "__Directive",
   859  		Args:   nil,
   860  		Field:  field,
   861  	}
   862  	ctx = graphql.WithResolverContext(ctx, rctx)
   863  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
   864  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
   865  		ctx = rctx // use context from middleware stack in children
   866  		return obj.Description, nil
   867  	})
   868  	if resTmp == nil {
   869  		return graphql.Null
   870  	}
   871  	res := resTmp.(string)
   872  	rctx.Result = res
   873  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
   874  	return graphql.MarshalString(res)
   875  }
   876  
   877  // nolint: vetshadow
   878  func (ec *executionContext) ___Directive_locations(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler {
   879  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
   880  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
   881  	rctx := &graphql.ResolverContext{
   882  		Object: "__Directive",
   883  		Args:   nil,
   884  		Field:  field,
   885  	}
   886  	ctx = graphql.WithResolverContext(ctx, rctx)
   887  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
   888  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
   889  		ctx = rctx // use context from middleware stack in children
   890  		return obj.Locations, nil
   891  	})
   892  	if resTmp == nil {
   893  		if !ec.HasError(rctx) {
   894  			ec.Errorf(ctx, "must not be null")
   895  		}
   896  		return graphql.Null
   897  	}
   898  	res := resTmp.([]string)
   899  	rctx.Result = res
   900  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
   901  
   902  	arr1 := make(graphql.Array, len(res))
   903  
   904  	for idx1 := range res {
   905  		arr1[idx1] = func() graphql.Marshaler {
   906  			return graphql.MarshalString(res[idx1])
   907  		}()
   908  	}
   909  
   910  	return arr1
   911  }
   912  
   913  // nolint: vetshadow
   914  func (ec *executionContext) ___Directive_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler {
   915  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
   916  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
   917  	rctx := &graphql.ResolverContext{
   918  		Object: "__Directive",
   919  		Args:   nil,
   920  		Field:  field,
   921  	}
   922  	ctx = graphql.WithResolverContext(ctx, rctx)
   923  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
   924  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
   925  		ctx = rctx // use context from middleware stack in children
   926  		return obj.Args, nil
   927  	})
   928  	if resTmp == nil {
   929  		if !ec.HasError(rctx) {
   930  			ec.Errorf(ctx, "must not be null")
   931  		}
   932  		return graphql.Null
   933  	}
   934  	res := resTmp.([]introspection.InputValue)
   935  	rctx.Result = res
   936  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
   937  
   938  	arr1 := make(graphql.Array, len(res))
   939  	var wg sync.WaitGroup
   940  
   941  	isLen1 := len(res) == 1
   942  	if !isLen1 {
   943  		wg.Add(len(res))
   944  	}
   945  
   946  	for idx1 := range res {
   947  		idx1 := idx1
   948  		rctx := &graphql.ResolverContext{
   949  			Index:  &idx1,
   950  			Result: &res[idx1],
   951  		}
   952  		ctx := graphql.WithResolverContext(ctx, rctx)
   953  		f := func(idx1 int) {
   954  			if !isLen1 {
   955  				defer wg.Done()
   956  			}
   957  			arr1[idx1] = func() graphql.Marshaler {
   958  
   959  				return ec.___InputValue(ctx, field.Selections, &res[idx1])
   960  			}()
   961  		}
   962  		if isLen1 {
   963  			f(idx1)
   964  		} else {
   965  			go f(idx1)
   966  		}
   967  
   968  	}
   969  	wg.Wait()
   970  	return arr1
   971  }
   972  
   973  var __EnumValueImplementors = []string{"__EnumValue"}
   974  
   975  // nolint: gocyclo, errcheck, gas, goconst
   976  func (ec *executionContext) ___EnumValue(ctx context.Context, sel ast.SelectionSet, obj *introspection.EnumValue) graphql.Marshaler {
   977  	fields := graphql.CollectFields(ctx, sel, __EnumValueImplementors)
   978  
   979  	out := graphql.NewOrderedMap(len(fields))
   980  	invalid := false
   981  	for i, field := range fields {
   982  		out.Keys[i] = field.Alias
   983  
   984  		switch field.Name {
   985  		case "__typename":
   986  			out.Values[i] = graphql.MarshalString("__EnumValue")
   987  		case "name":
   988  			out.Values[i] = ec.___EnumValue_name(ctx, field, obj)
   989  			if out.Values[i] == graphql.Null {
   990  				invalid = true
   991  			}
   992  		case "description":
   993  			out.Values[i] = ec.___EnumValue_description(ctx, field, obj)
   994  		case "isDeprecated":
   995  			out.Values[i] = ec.___EnumValue_isDeprecated(ctx, field, obj)
   996  			if out.Values[i] == graphql.Null {
   997  				invalid = true
   998  			}
   999  		case "deprecationReason":
  1000  			out.Values[i] = ec.___EnumValue_deprecationReason(ctx, field, obj)
  1001  		default:
  1002  			panic("unknown field " + strconv.Quote(field.Name))
  1003  		}
  1004  	}
  1005  
  1006  	if invalid {
  1007  		return graphql.Null
  1008  	}
  1009  	return out
  1010  }
  1011  
  1012  // nolint: vetshadow
  1013  func (ec *executionContext) ___EnumValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler {
  1014  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1015  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1016  	rctx := &graphql.ResolverContext{
  1017  		Object: "__EnumValue",
  1018  		Args:   nil,
  1019  		Field:  field,
  1020  	}
  1021  	ctx = graphql.WithResolverContext(ctx, rctx)
  1022  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1023  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1024  		ctx = rctx // use context from middleware stack in children
  1025  		return obj.Name, nil
  1026  	})
  1027  	if resTmp == nil {
  1028  		if !ec.HasError(rctx) {
  1029  			ec.Errorf(ctx, "must not be null")
  1030  		}
  1031  		return graphql.Null
  1032  	}
  1033  	res := resTmp.(string)
  1034  	rctx.Result = res
  1035  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1036  	return graphql.MarshalString(res)
  1037  }
  1038  
  1039  // nolint: vetshadow
  1040  func (ec *executionContext) ___EnumValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler {
  1041  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1042  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1043  	rctx := &graphql.ResolverContext{
  1044  		Object: "__EnumValue",
  1045  		Args:   nil,
  1046  		Field:  field,
  1047  	}
  1048  	ctx = graphql.WithResolverContext(ctx, rctx)
  1049  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1050  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1051  		ctx = rctx // use context from middleware stack in children
  1052  		return obj.Description, nil
  1053  	})
  1054  	if resTmp == nil {
  1055  		return graphql.Null
  1056  	}
  1057  	res := resTmp.(string)
  1058  	rctx.Result = res
  1059  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1060  	return graphql.MarshalString(res)
  1061  }
  1062  
  1063  // nolint: vetshadow
  1064  func (ec *executionContext) ___EnumValue_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler {
  1065  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1066  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1067  	rctx := &graphql.ResolverContext{
  1068  		Object: "__EnumValue",
  1069  		Args:   nil,
  1070  		Field:  field,
  1071  	}
  1072  	ctx = graphql.WithResolverContext(ctx, rctx)
  1073  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1074  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1075  		ctx = rctx // use context from middleware stack in children
  1076  		return obj.IsDeprecated(), nil
  1077  	})
  1078  	if resTmp == nil {
  1079  		if !ec.HasError(rctx) {
  1080  			ec.Errorf(ctx, "must not be null")
  1081  		}
  1082  		return graphql.Null
  1083  	}
  1084  	res := resTmp.(bool)
  1085  	rctx.Result = res
  1086  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1087  	return graphql.MarshalBoolean(res)
  1088  }
  1089  
  1090  // nolint: vetshadow
  1091  func (ec *executionContext) ___EnumValue_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler {
  1092  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1093  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1094  	rctx := &graphql.ResolverContext{
  1095  		Object: "__EnumValue",
  1096  		Args:   nil,
  1097  		Field:  field,
  1098  	}
  1099  	ctx = graphql.WithResolverContext(ctx, rctx)
  1100  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1101  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1102  		ctx = rctx // use context from middleware stack in children
  1103  		return obj.DeprecationReason(), nil
  1104  	})
  1105  	if resTmp == nil {
  1106  		return graphql.Null
  1107  	}
  1108  	res := resTmp.(*string)
  1109  	rctx.Result = res
  1110  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1111  
  1112  	if res == nil {
  1113  		return graphql.Null
  1114  	}
  1115  	return graphql.MarshalString(*res)
  1116  }
  1117  
  1118  var __FieldImplementors = []string{"__Field"}
  1119  
  1120  // nolint: gocyclo, errcheck, gas, goconst
  1121  func (ec *executionContext) ___Field(ctx context.Context, sel ast.SelectionSet, obj *introspection.Field) graphql.Marshaler {
  1122  	fields := graphql.CollectFields(ctx, sel, __FieldImplementors)
  1123  
  1124  	out := graphql.NewOrderedMap(len(fields))
  1125  	invalid := false
  1126  	for i, field := range fields {
  1127  		out.Keys[i] = field.Alias
  1128  
  1129  		switch field.Name {
  1130  		case "__typename":
  1131  			out.Values[i] = graphql.MarshalString("__Field")
  1132  		case "name":
  1133  			out.Values[i] = ec.___Field_name(ctx, field, obj)
  1134  			if out.Values[i] == graphql.Null {
  1135  				invalid = true
  1136  			}
  1137  		case "description":
  1138  			out.Values[i] = ec.___Field_description(ctx, field, obj)
  1139  		case "args":
  1140  			out.Values[i] = ec.___Field_args(ctx, field, obj)
  1141  			if out.Values[i] == graphql.Null {
  1142  				invalid = true
  1143  			}
  1144  		case "type":
  1145  			out.Values[i] = ec.___Field_type(ctx, field, obj)
  1146  			if out.Values[i] == graphql.Null {
  1147  				invalid = true
  1148  			}
  1149  		case "isDeprecated":
  1150  			out.Values[i] = ec.___Field_isDeprecated(ctx, field, obj)
  1151  			if out.Values[i] == graphql.Null {
  1152  				invalid = true
  1153  			}
  1154  		case "deprecationReason":
  1155  			out.Values[i] = ec.___Field_deprecationReason(ctx, field, obj)
  1156  		default:
  1157  			panic("unknown field " + strconv.Quote(field.Name))
  1158  		}
  1159  	}
  1160  
  1161  	if invalid {
  1162  		return graphql.Null
  1163  	}
  1164  	return out
  1165  }
  1166  
  1167  // nolint: vetshadow
  1168  func (ec *executionContext) ___Field_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler {
  1169  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1170  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1171  	rctx := &graphql.ResolverContext{
  1172  		Object: "__Field",
  1173  		Args:   nil,
  1174  		Field:  field,
  1175  	}
  1176  	ctx = graphql.WithResolverContext(ctx, rctx)
  1177  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1178  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1179  		ctx = rctx // use context from middleware stack in children
  1180  		return obj.Name, nil
  1181  	})
  1182  	if resTmp == nil {
  1183  		if !ec.HasError(rctx) {
  1184  			ec.Errorf(ctx, "must not be null")
  1185  		}
  1186  		return graphql.Null
  1187  	}
  1188  	res := resTmp.(string)
  1189  	rctx.Result = res
  1190  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1191  	return graphql.MarshalString(res)
  1192  }
  1193  
  1194  // nolint: vetshadow
  1195  func (ec *executionContext) ___Field_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler {
  1196  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1197  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1198  	rctx := &graphql.ResolverContext{
  1199  		Object: "__Field",
  1200  		Args:   nil,
  1201  		Field:  field,
  1202  	}
  1203  	ctx = graphql.WithResolverContext(ctx, rctx)
  1204  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1205  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1206  		ctx = rctx // use context from middleware stack in children
  1207  		return obj.Description, nil
  1208  	})
  1209  	if resTmp == nil {
  1210  		return graphql.Null
  1211  	}
  1212  	res := resTmp.(string)
  1213  	rctx.Result = res
  1214  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1215  	return graphql.MarshalString(res)
  1216  }
  1217  
  1218  // nolint: vetshadow
  1219  func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler {
  1220  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1221  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1222  	rctx := &graphql.ResolverContext{
  1223  		Object: "__Field",
  1224  		Args:   nil,
  1225  		Field:  field,
  1226  	}
  1227  	ctx = graphql.WithResolverContext(ctx, rctx)
  1228  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1229  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1230  		ctx = rctx // use context from middleware stack in children
  1231  		return obj.Args, nil
  1232  	})
  1233  	if resTmp == nil {
  1234  		if !ec.HasError(rctx) {
  1235  			ec.Errorf(ctx, "must not be null")
  1236  		}
  1237  		return graphql.Null
  1238  	}
  1239  	res := resTmp.([]introspection.InputValue)
  1240  	rctx.Result = res
  1241  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1242  
  1243  	arr1 := make(graphql.Array, len(res))
  1244  	var wg sync.WaitGroup
  1245  
  1246  	isLen1 := len(res) == 1
  1247  	if !isLen1 {
  1248  		wg.Add(len(res))
  1249  	}
  1250  
  1251  	for idx1 := range res {
  1252  		idx1 := idx1
  1253  		rctx := &graphql.ResolverContext{
  1254  			Index:  &idx1,
  1255  			Result: &res[idx1],
  1256  		}
  1257  		ctx := graphql.WithResolverContext(ctx, rctx)
  1258  		f := func(idx1 int) {
  1259  			if !isLen1 {
  1260  				defer wg.Done()
  1261  			}
  1262  			arr1[idx1] = func() graphql.Marshaler {
  1263  
  1264  				return ec.___InputValue(ctx, field.Selections, &res[idx1])
  1265  			}()
  1266  		}
  1267  		if isLen1 {
  1268  			f(idx1)
  1269  		} else {
  1270  			go f(idx1)
  1271  		}
  1272  
  1273  	}
  1274  	wg.Wait()
  1275  	return arr1
  1276  }
  1277  
  1278  // nolint: vetshadow
  1279  func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler {
  1280  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1281  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1282  	rctx := &graphql.ResolverContext{
  1283  		Object: "__Field",
  1284  		Args:   nil,
  1285  		Field:  field,
  1286  	}
  1287  	ctx = graphql.WithResolverContext(ctx, rctx)
  1288  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1289  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1290  		ctx = rctx // use context from middleware stack in children
  1291  		return obj.Type, nil
  1292  	})
  1293  	if resTmp == nil {
  1294  		if !ec.HasError(rctx) {
  1295  			ec.Errorf(ctx, "must not be null")
  1296  		}
  1297  		return graphql.Null
  1298  	}
  1299  	res := resTmp.(*introspection.Type)
  1300  	rctx.Result = res
  1301  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1302  
  1303  	if res == nil {
  1304  		if !ec.HasError(rctx) {
  1305  			ec.Errorf(ctx, "must not be null")
  1306  		}
  1307  		return graphql.Null
  1308  	}
  1309  
  1310  	return ec.___Type(ctx, field.Selections, res)
  1311  }
  1312  
  1313  // nolint: vetshadow
  1314  func (ec *executionContext) ___Field_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler {
  1315  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1316  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1317  	rctx := &graphql.ResolverContext{
  1318  		Object: "__Field",
  1319  		Args:   nil,
  1320  		Field:  field,
  1321  	}
  1322  	ctx = graphql.WithResolverContext(ctx, rctx)
  1323  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1324  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1325  		ctx = rctx // use context from middleware stack in children
  1326  		return obj.IsDeprecated(), nil
  1327  	})
  1328  	if resTmp == nil {
  1329  		if !ec.HasError(rctx) {
  1330  			ec.Errorf(ctx, "must not be null")
  1331  		}
  1332  		return graphql.Null
  1333  	}
  1334  	res := resTmp.(bool)
  1335  	rctx.Result = res
  1336  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1337  	return graphql.MarshalBoolean(res)
  1338  }
  1339  
  1340  // nolint: vetshadow
  1341  func (ec *executionContext) ___Field_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler {
  1342  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1343  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1344  	rctx := &graphql.ResolverContext{
  1345  		Object: "__Field",
  1346  		Args:   nil,
  1347  		Field:  field,
  1348  	}
  1349  	ctx = graphql.WithResolverContext(ctx, rctx)
  1350  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1351  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1352  		ctx = rctx // use context from middleware stack in children
  1353  		return obj.DeprecationReason(), nil
  1354  	})
  1355  	if resTmp == nil {
  1356  		return graphql.Null
  1357  	}
  1358  	res := resTmp.(*string)
  1359  	rctx.Result = res
  1360  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1361  
  1362  	if res == nil {
  1363  		return graphql.Null
  1364  	}
  1365  	return graphql.MarshalString(*res)
  1366  }
  1367  
  1368  var __InputValueImplementors = []string{"__InputValue"}
  1369  
  1370  // nolint: gocyclo, errcheck, gas, goconst
  1371  func (ec *executionContext) ___InputValue(ctx context.Context, sel ast.SelectionSet, obj *introspection.InputValue) graphql.Marshaler {
  1372  	fields := graphql.CollectFields(ctx, sel, __InputValueImplementors)
  1373  
  1374  	out := graphql.NewOrderedMap(len(fields))
  1375  	invalid := false
  1376  	for i, field := range fields {
  1377  		out.Keys[i] = field.Alias
  1378  
  1379  		switch field.Name {
  1380  		case "__typename":
  1381  			out.Values[i] = graphql.MarshalString("__InputValue")
  1382  		case "name":
  1383  			out.Values[i] = ec.___InputValue_name(ctx, field, obj)
  1384  			if out.Values[i] == graphql.Null {
  1385  				invalid = true
  1386  			}
  1387  		case "description":
  1388  			out.Values[i] = ec.___InputValue_description(ctx, field, obj)
  1389  		case "type":
  1390  			out.Values[i] = ec.___InputValue_type(ctx, field, obj)
  1391  			if out.Values[i] == graphql.Null {
  1392  				invalid = true
  1393  			}
  1394  		case "defaultValue":
  1395  			out.Values[i] = ec.___InputValue_defaultValue(ctx, field, obj)
  1396  		default:
  1397  			panic("unknown field " + strconv.Quote(field.Name))
  1398  		}
  1399  	}
  1400  
  1401  	if invalid {
  1402  		return graphql.Null
  1403  	}
  1404  	return out
  1405  }
  1406  
  1407  // nolint: vetshadow
  1408  func (ec *executionContext) ___InputValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler {
  1409  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1410  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1411  	rctx := &graphql.ResolverContext{
  1412  		Object: "__InputValue",
  1413  		Args:   nil,
  1414  		Field:  field,
  1415  	}
  1416  	ctx = graphql.WithResolverContext(ctx, rctx)
  1417  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1418  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1419  		ctx = rctx // use context from middleware stack in children
  1420  		return obj.Name, nil
  1421  	})
  1422  	if resTmp == nil {
  1423  		if !ec.HasError(rctx) {
  1424  			ec.Errorf(ctx, "must not be null")
  1425  		}
  1426  		return graphql.Null
  1427  	}
  1428  	res := resTmp.(string)
  1429  	rctx.Result = res
  1430  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1431  	return graphql.MarshalString(res)
  1432  }
  1433  
  1434  // nolint: vetshadow
  1435  func (ec *executionContext) ___InputValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler {
  1436  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1437  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1438  	rctx := &graphql.ResolverContext{
  1439  		Object: "__InputValue",
  1440  		Args:   nil,
  1441  		Field:  field,
  1442  	}
  1443  	ctx = graphql.WithResolverContext(ctx, rctx)
  1444  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1445  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1446  		ctx = rctx // use context from middleware stack in children
  1447  		return obj.Description, nil
  1448  	})
  1449  	if resTmp == nil {
  1450  		return graphql.Null
  1451  	}
  1452  	res := resTmp.(string)
  1453  	rctx.Result = res
  1454  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1455  	return graphql.MarshalString(res)
  1456  }
  1457  
  1458  // nolint: vetshadow
  1459  func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler {
  1460  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1461  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1462  	rctx := &graphql.ResolverContext{
  1463  		Object: "__InputValue",
  1464  		Args:   nil,
  1465  		Field:  field,
  1466  	}
  1467  	ctx = graphql.WithResolverContext(ctx, rctx)
  1468  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1469  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1470  		ctx = rctx // use context from middleware stack in children
  1471  		return obj.Type, nil
  1472  	})
  1473  	if resTmp == nil {
  1474  		if !ec.HasError(rctx) {
  1475  			ec.Errorf(ctx, "must not be null")
  1476  		}
  1477  		return graphql.Null
  1478  	}
  1479  	res := resTmp.(*introspection.Type)
  1480  	rctx.Result = res
  1481  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1482  
  1483  	if res == nil {
  1484  		if !ec.HasError(rctx) {
  1485  			ec.Errorf(ctx, "must not be null")
  1486  		}
  1487  		return graphql.Null
  1488  	}
  1489  
  1490  	return ec.___Type(ctx, field.Selections, res)
  1491  }
  1492  
  1493  // nolint: vetshadow
  1494  func (ec *executionContext) ___InputValue_defaultValue(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler {
  1495  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1496  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1497  	rctx := &graphql.ResolverContext{
  1498  		Object: "__InputValue",
  1499  		Args:   nil,
  1500  		Field:  field,
  1501  	}
  1502  	ctx = graphql.WithResolverContext(ctx, rctx)
  1503  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1504  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1505  		ctx = rctx // use context from middleware stack in children
  1506  		return obj.DefaultValue, nil
  1507  	})
  1508  	if resTmp == nil {
  1509  		return graphql.Null
  1510  	}
  1511  	res := resTmp.(*string)
  1512  	rctx.Result = res
  1513  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1514  
  1515  	if res == nil {
  1516  		return graphql.Null
  1517  	}
  1518  	return graphql.MarshalString(*res)
  1519  }
  1520  
  1521  var __SchemaImplementors = []string{"__Schema"}
  1522  
  1523  // nolint: gocyclo, errcheck, gas, goconst
  1524  func (ec *executionContext) ___Schema(ctx context.Context, sel ast.SelectionSet, obj *introspection.Schema) graphql.Marshaler {
  1525  	fields := graphql.CollectFields(ctx, sel, __SchemaImplementors)
  1526  
  1527  	out := graphql.NewOrderedMap(len(fields))
  1528  	invalid := false
  1529  	for i, field := range fields {
  1530  		out.Keys[i] = field.Alias
  1531  
  1532  		switch field.Name {
  1533  		case "__typename":
  1534  			out.Values[i] = graphql.MarshalString("__Schema")
  1535  		case "types":
  1536  			out.Values[i] = ec.___Schema_types(ctx, field, obj)
  1537  			if out.Values[i] == graphql.Null {
  1538  				invalid = true
  1539  			}
  1540  		case "queryType":
  1541  			out.Values[i] = ec.___Schema_queryType(ctx, field, obj)
  1542  			if out.Values[i] == graphql.Null {
  1543  				invalid = true
  1544  			}
  1545  		case "mutationType":
  1546  			out.Values[i] = ec.___Schema_mutationType(ctx, field, obj)
  1547  		case "subscriptionType":
  1548  			out.Values[i] = ec.___Schema_subscriptionType(ctx, field, obj)
  1549  		case "directives":
  1550  			out.Values[i] = ec.___Schema_directives(ctx, field, obj)
  1551  			if out.Values[i] == graphql.Null {
  1552  				invalid = true
  1553  			}
  1554  		default:
  1555  			panic("unknown field " + strconv.Quote(field.Name))
  1556  		}
  1557  	}
  1558  
  1559  	if invalid {
  1560  		return graphql.Null
  1561  	}
  1562  	return out
  1563  }
  1564  
  1565  // nolint: vetshadow
  1566  func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler {
  1567  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1568  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1569  	rctx := &graphql.ResolverContext{
  1570  		Object: "__Schema",
  1571  		Args:   nil,
  1572  		Field:  field,
  1573  	}
  1574  	ctx = graphql.WithResolverContext(ctx, rctx)
  1575  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1576  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1577  		ctx = rctx // use context from middleware stack in children
  1578  		return obj.Types(), nil
  1579  	})
  1580  	if resTmp == nil {
  1581  		if !ec.HasError(rctx) {
  1582  			ec.Errorf(ctx, "must not be null")
  1583  		}
  1584  		return graphql.Null
  1585  	}
  1586  	res := resTmp.([]introspection.Type)
  1587  	rctx.Result = res
  1588  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1589  
  1590  	arr1 := make(graphql.Array, len(res))
  1591  	var wg sync.WaitGroup
  1592  
  1593  	isLen1 := len(res) == 1
  1594  	if !isLen1 {
  1595  		wg.Add(len(res))
  1596  	}
  1597  
  1598  	for idx1 := range res {
  1599  		idx1 := idx1
  1600  		rctx := &graphql.ResolverContext{
  1601  			Index:  &idx1,
  1602  			Result: &res[idx1],
  1603  		}
  1604  		ctx := graphql.WithResolverContext(ctx, rctx)
  1605  		f := func(idx1 int) {
  1606  			if !isLen1 {
  1607  				defer wg.Done()
  1608  			}
  1609  			arr1[idx1] = func() graphql.Marshaler {
  1610  
  1611  				return ec.___Type(ctx, field.Selections, &res[idx1])
  1612  			}()
  1613  		}
  1614  		if isLen1 {
  1615  			f(idx1)
  1616  		} else {
  1617  			go f(idx1)
  1618  		}
  1619  
  1620  	}
  1621  	wg.Wait()
  1622  	return arr1
  1623  }
  1624  
  1625  // nolint: vetshadow
  1626  func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler {
  1627  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1628  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1629  	rctx := &graphql.ResolverContext{
  1630  		Object: "__Schema",
  1631  		Args:   nil,
  1632  		Field:  field,
  1633  	}
  1634  	ctx = graphql.WithResolverContext(ctx, rctx)
  1635  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1636  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1637  		ctx = rctx // use context from middleware stack in children
  1638  		return obj.QueryType(), nil
  1639  	})
  1640  	if resTmp == nil {
  1641  		if !ec.HasError(rctx) {
  1642  			ec.Errorf(ctx, "must not be null")
  1643  		}
  1644  		return graphql.Null
  1645  	}
  1646  	res := resTmp.(*introspection.Type)
  1647  	rctx.Result = res
  1648  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1649  
  1650  	if res == nil {
  1651  		if !ec.HasError(rctx) {
  1652  			ec.Errorf(ctx, "must not be null")
  1653  		}
  1654  		return graphql.Null
  1655  	}
  1656  
  1657  	return ec.___Type(ctx, field.Selections, res)
  1658  }
  1659  
  1660  // nolint: vetshadow
  1661  func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler {
  1662  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1663  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1664  	rctx := &graphql.ResolverContext{
  1665  		Object: "__Schema",
  1666  		Args:   nil,
  1667  		Field:  field,
  1668  	}
  1669  	ctx = graphql.WithResolverContext(ctx, rctx)
  1670  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1671  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1672  		ctx = rctx // use context from middleware stack in children
  1673  		return obj.MutationType(), nil
  1674  	})
  1675  	if resTmp == nil {
  1676  		return graphql.Null
  1677  	}
  1678  	res := resTmp.(*introspection.Type)
  1679  	rctx.Result = res
  1680  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1681  
  1682  	if res == nil {
  1683  		return graphql.Null
  1684  	}
  1685  
  1686  	return ec.___Type(ctx, field.Selections, res)
  1687  }
  1688  
  1689  // nolint: vetshadow
  1690  func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler {
  1691  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1692  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1693  	rctx := &graphql.ResolverContext{
  1694  		Object: "__Schema",
  1695  		Args:   nil,
  1696  		Field:  field,
  1697  	}
  1698  	ctx = graphql.WithResolverContext(ctx, rctx)
  1699  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1700  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1701  		ctx = rctx // use context from middleware stack in children
  1702  		return obj.SubscriptionType(), nil
  1703  	})
  1704  	if resTmp == nil {
  1705  		return graphql.Null
  1706  	}
  1707  	res := resTmp.(*introspection.Type)
  1708  	rctx.Result = res
  1709  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1710  
  1711  	if res == nil {
  1712  		return graphql.Null
  1713  	}
  1714  
  1715  	return ec.___Type(ctx, field.Selections, res)
  1716  }
  1717  
  1718  // nolint: vetshadow
  1719  func (ec *executionContext) ___Schema_directives(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler {
  1720  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1721  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1722  	rctx := &graphql.ResolverContext{
  1723  		Object: "__Schema",
  1724  		Args:   nil,
  1725  		Field:  field,
  1726  	}
  1727  	ctx = graphql.WithResolverContext(ctx, rctx)
  1728  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1729  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1730  		ctx = rctx // use context from middleware stack in children
  1731  		return obj.Directives(), nil
  1732  	})
  1733  	if resTmp == nil {
  1734  		if !ec.HasError(rctx) {
  1735  			ec.Errorf(ctx, "must not be null")
  1736  		}
  1737  		return graphql.Null
  1738  	}
  1739  	res := resTmp.([]introspection.Directive)
  1740  	rctx.Result = res
  1741  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1742  
  1743  	arr1 := make(graphql.Array, len(res))
  1744  	var wg sync.WaitGroup
  1745  
  1746  	isLen1 := len(res) == 1
  1747  	if !isLen1 {
  1748  		wg.Add(len(res))
  1749  	}
  1750  
  1751  	for idx1 := range res {
  1752  		idx1 := idx1
  1753  		rctx := &graphql.ResolverContext{
  1754  			Index:  &idx1,
  1755  			Result: &res[idx1],
  1756  		}
  1757  		ctx := graphql.WithResolverContext(ctx, rctx)
  1758  		f := func(idx1 int) {
  1759  			if !isLen1 {
  1760  				defer wg.Done()
  1761  			}
  1762  			arr1[idx1] = func() graphql.Marshaler {
  1763  
  1764  				return ec.___Directive(ctx, field.Selections, &res[idx1])
  1765  			}()
  1766  		}
  1767  		if isLen1 {
  1768  			f(idx1)
  1769  		} else {
  1770  			go f(idx1)
  1771  		}
  1772  
  1773  	}
  1774  	wg.Wait()
  1775  	return arr1
  1776  }
  1777  
  1778  var __TypeImplementors = []string{"__Type"}
  1779  
  1780  // nolint: gocyclo, errcheck, gas, goconst
  1781  func (ec *executionContext) ___Type(ctx context.Context, sel ast.SelectionSet, obj *introspection.Type) graphql.Marshaler {
  1782  	fields := graphql.CollectFields(ctx, sel, __TypeImplementors)
  1783  
  1784  	out := graphql.NewOrderedMap(len(fields))
  1785  	invalid := false
  1786  	for i, field := range fields {
  1787  		out.Keys[i] = field.Alias
  1788  
  1789  		switch field.Name {
  1790  		case "__typename":
  1791  			out.Values[i] = graphql.MarshalString("__Type")
  1792  		case "kind":
  1793  			out.Values[i] = ec.___Type_kind(ctx, field, obj)
  1794  			if out.Values[i] == graphql.Null {
  1795  				invalid = true
  1796  			}
  1797  		case "name":
  1798  			out.Values[i] = ec.___Type_name(ctx, field, obj)
  1799  		case "description":
  1800  			out.Values[i] = ec.___Type_description(ctx, field, obj)
  1801  		case "fields":
  1802  			out.Values[i] = ec.___Type_fields(ctx, field, obj)
  1803  		case "interfaces":
  1804  			out.Values[i] = ec.___Type_interfaces(ctx, field, obj)
  1805  		case "possibleTypes":
  1806  			out.Values[i] = ec.___Type_possibleTypes(ctx, field, obj)
  1807  		case "enumValues":
  1808  			out.Values[i] = ec.___Type_enumValues(ctx, field, obj)
  1809  		case "inputFields":
  1810  			out.Values[i] = ec.___Type_inputFields(ctx, field, obj)
  1811  		case "ofType":
  1812  			out.Values[i] = ec.___Type_ofType(ctx, field, obj)
  1813  		default:
  1814  			panic("unknown field " + strconv.Quote(field.Name))
  1815  		}
  1816  	}
  1817  
  1818  	if invalid {
  1819  		return graphql.Null
  1820  	}
  1821  	return out
  1822  }
  1823  
  1824  // nolint: vetshadow
  1825  func (ec *executionContext) ___Type_kind(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler {
  1826  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1827  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1828  	rctx := &graphql.ResolverContext{
  1829  		Object: "__Type",
  1830  		Args:   nil,
  1831  		Field:  field,
  1832  	}
  1833  	ctx = graphql.WithResolverContext(ctx, rctx)
  1834  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1835  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1836  		ctx = rctx // use context from middleware stack in children
  1837  		return obj.Kind(), nil
  1838  	})
  1839  	if resTmp == nil {
  1840  		if !ec.HasError(rctx) {
  1841  			ec.Errorf(ctx, "must not be null")
  1842  		}
  1843  		return graphql.Null
  1844  	}
  1845  	res := resTmp.(string)
  1846  	rctx.Result = res
  1847  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1848  	return graphql.MarshalString(res)
  1849  }
  1850  
  1851  // nolint: vetshadow
  1852  func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler {
  1853  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1854  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1855  	rctx := &graphql.ResolverContext{
  1856  		Object: "__Type",
  1857  		Args:   nil,
  1858  		Field:  field,
  1859  	}
  1860  	ctx = graphql.WithResolverContext(ctx, rctx)
  1861  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1862  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1863  		ctx = rctx // use context from middleware stack in children
  1864  		return obj.Name(), nil
  1865  	})
  1866  	if resTmp == nil {
  1867  		return graphql.Null
  1868  	}
  1869  	res := resTmp.(*string)
  1870  	rctx.Result = res
  1871  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1872  
  1873  	if res == nil {
  1874  		return graphql.Null
  1875  	}
  1876  	return graphql.MarshalString(*res)
  1877  }
  1878  
  1879  // nolint: vetshadow
  1880  func (ec *executionContext) ___Type_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler {
  1881  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1882  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1883  	rctx := &graphql.ResolverContext{
  1884  		Object: "__Type",
  1885  		Args:   nil,
  1886  		Field:  field,
  1887  	}
  1888  	ctx = graphql.WithResolverContext(ctx, rctx)
  1889  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1890  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1891  		ctx = rctx // use context from middleware stack in children
  1892  		return obj.Description(), nil
  1893  	})
  1894  	if resTmp == nil {
  1895  		return graphql.Null
  1896  	}
  1897  	res := resTmp.(string)
  1898  	rctx.Result = res
  1899  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1900  	return graphql.MarshalString(res)
  1901  }
  1902  
  1903  // nolint: vetshadow
  1904  func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler {
  1905  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1906  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1907  	rawArgs := field.ArgumentMap(ec.Variables)
  1908  	args, err := field___Type_fields_args(rawArgs)
  1909  	if err != nil {
  1910  		ec.Error(ctx, err)
  1911  		return graphql.Null
  1912  	}
  1913  	rctx := &graphql.ResolverContext{
  1914  		Object: "__Type",
  1915  		Args:   args,
  1916  		Field:  field,
  1917  	}
  1918  	ctx = graphql.WithResolverContext(ctx, rctx)
  1919  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1920  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1921  		ctx = rctx // use context from middleware stack in children
  1922  		return obj.Fields(args["includeDeprecated"].(bool)), nil
  1923  	})
  1924  	if resTmp == nil {
  1925  		return graphql.Null
  1926  	}
  1927  	res := resTmp.([]introspection.Field)
  1928  	rctx.Result = res
  1929  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1930  
  1931  	arr1 := make(graphql.Array, len(res))
  1932  	var wg sync.WaitGroup
  1933  
  1934  	isLen1 := len(res) == 1
  1935  	if !isLen1 {
  1936  		wg.Add(len(res))
  1937  	}
  1938  
  1939  	for idx1 := range res {
  1940  		idx1 := idx1
  1941  		rctx := &graphql.ResolverContext{
  1942  			Index:  &idx1,
  1943  			Result: &res[idx1],
  1944  		}
  1945  		ctx := graphql.WithResolverContext(ctx, rctx)
  1946  		f := func(idx1 int) {
  1947  			if !isLen1 {
  1948  				defer wg.Done()
  1949  			}
  1950  			arr1[idx1] = func() graphql.Marshaler {
  1951  
  1952  				return ec.___Field(ctx, field.Selections, &res[idx1])
  1953  			}()
  1954  		}
  1955  		if isLen1 {
  1956  			f(idx1)
  1957  		} else {
  1958  			go f(idx1)
  1959  		}
  1960  
  1961  	}
  1962  	wg.Wait()
  1963  	return arr1
  1964  }
  1965  
  1966  // nolint: vetshadow
  1967  func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler {
  1968  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  1969  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  1970  	rctx := &graphql.ResolverContext{
  1971  		Object: "__Type",
  1972  		Args:   nil,
  1973  		Field:  field,
  1974  	}
  1975  	ctx = graphql.WithResolverContext(ctx, rctx)
  1976  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  1977  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  1978  		ctx = rctx // use context from middleware stack in children
  1979  		return obj.Interfaces(), nil
  1980  	})
  1981  	if resTmp == nil {
  1982  		return graphql.Null
  1983  	}
  1984  	res := resTmp.([]introspection.Type)
  1985  	rctx.Result = res
  1986  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  1987  
  1988  	arr1 := make(graphql.Array, len(res))
  1989  	var wg sync.WaitGroup
  1990  
  1991  	isLen1 := len(res) == 1
  1992  	if !isLen1 {
  1993  		wg.Add(len(res))
  1994  	}
  1995  
  1996  	for idx1 := range res {
  1997  		idx1 := idx1
  1998  		rctx := &graphql.ResolverContext{
  1999  			Index:  &idx1,
  2000  			Result: &res[idx1],
  2001  		}
  2002  		ctx := graphql.WithResolverContext(ctx, rctx)
  2003  		f := func(idx1 int) {
  2004  			if !isLen1 {
  2005  				defer wg.Done()
  2006  			}
  2007  			arr1[idx1] = func() graphql.Marshaler {
  2008  
  2009  				return ec.___Type(ctx, field.Selections, &res[idx1])
  2010  			}()
  2011  		}
  2012  		if isLen1 {
  2013  			f(idx1)
  2014  		} else {
  2015  			go f(idx1)
  2016  		}
  2017  
  2018  	}
  2019  	wg.Wait()
  2020  	return arr1
  2021  }
  2022  
  2023  // nolint: vetshadow
  2024  func (ec *executionContext) ___Type_possibleTypes(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler {
  2025  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  2026  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  2027  	rctx := &graphql.ResolverContext{
  2028  		Object: "__Type",
  2029  		Args:   nil,
  2030  		Field:  field,
  2031  	}
  2032  	ctx = graphql.WithResolverContext(ctx, rctx)
  2033  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  2034  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  2035  		ctx = rctx // use context from middleware stack in children
  2036  		return obj.PossibleTypes(), nil
  2037  	})
  2038  	if resTmp == nil {
  2039  		return graphql.Null
  2040  	}
  2041  	res := resTmp.([]introspection.Type)
  2042  	rctx.Result = res
  2043  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  2044  
  2045  	arr1 := make(graphql.Array, len(res))
  2046  	var wg sync.WaitGroup
  2047  
  2048  	isLen1 := len(res) == 1
  2049  	if !isLen1 {
  2050  		wg.Add(len(res))
  2051  	}
  2052  
  2053  	for idx1 := range res {
  2054  		idx1 := idx1
  2055  		rctx := &graphql.ResolverContext{
  2056  			Index:  &idx1,
  2057  			Result: &res[idx1],
  2058  		}
  2059  		ctx := graphql.WithResolverContext(ctx, rctx)
  2060  		f := func(idx1 int) {
  2061  			if !isLen1 {
  2062  				defer wg.Done()
  2063  			}
  2064  			arr1[idx1] = func() graphql.Marshaler {
  2065  
  2066  				return ec.___Type(ctx, field.Selections, &res[idx1])
  2067  			}()
  2068  		}
  2069  		if isLen1 {
  2070  			f(idx1)
  2071  		} else {
  2072  			go f(idx1)
  2073  		}
  2074  
  2075  	}
  2076  	wg.Wait()
  2077  	return arr1
  2078  }
  2079  
  2080  // nolint: vetshadow
  2081  func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler {
  2082  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  2083  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  2084  	rawArgs := field.ArgumentMap(ec.Variables)
  2085  	args, err := field___Type_enumValues_args(rawArgs)
  2086  	if err != nil {
  2087  		ec.Error(ctx, err)
  2088  		return graphql.Null
  2089  	}
  2090  	rctx := &graphql.ResolverContext{
  2091  		Object: "__Type",
  2092  		Args:   args,
  2093  		Field:  field,
  2094  	}
  2095  	ctx = graphql.WithResolverContext(ctx, rctx)
  2096  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  2097  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  2098  		ctx = rctx // use context from middleware stack in children
  2099  		return obj.EnumValues(args["includeDeprecated"].(bool)), nil
  2100  	})
  2101  	if resTmp == nil {
  2102  		return graphql.Null
  2103  	}
  2104  	res := resTmp.([]introspection.EnumValue)
  2105  	rctx.Result = res
  2106  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  2107  
  2108  	arr1 := make(graphql.Array, len(res))
  2109  	var wg sync.WaitGroup
  2110  
  2111  	isLen1 := len(res) == 1
  2112  	if !isLen1 {
  2113  		wg.Add(len(res))
  2114  	}
  2115  
  2116  	for idx1 := range res {
  2117  		idx1 := idx1
  2118  		rctx := &graphql.ResolverContext{
  2119  			Index:  &idx1,
  2120  			Result: &res[idx1],
  2121  		}
  2122  		ctx := graphql.WithResolverContext(ctx, rctx)
  2123  		f := func(idx1 int) {
  2124  			if !isLen1 {
  2125  				defer wg.Done()
  2126  			}
  2127  			arr1[idx1] = func() graphql.Marshaler {
  2128  
  2129  				return ec.___EnumValue(ctx, field.Selections, &res[idx1])
  2130  			}()
  2131  		}
  2132  		if isLen1 {
  2133  			f(idx1)
  2134  		} else {
  2135  			go f(idx1)
  2136  		}
  2137  
  2138  	}
  2139  	wg.Wait()
  2140  	return arr1
  2141  }
  2142  
  2143  // nolint: vetshadow
  2144  func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler {
  2145  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  2146  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  2147  	rctx := &graphql.ResolverContext{
  2148  		Object: "__Type",
  2149  		Args:   nil,
  2150  		Field:  field,
  2151  	}
  2152  	ctx = graphql.WithResolverContext(ctx, rctx)
  2153  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  2154  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  2155  		ctx = rctx // use context from middleware stack in children
  2156  		return obj.InputFields(), nil
  2157  	})
  2158  	if resTmp == nil {
  2159  		return graphql.Null
  2160  	}
  2161  	res := resTmp.([]introspection.InputValue)
  2162  	rctx.Result = res
  2163  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  2164  
  2165  	arr1 := make(graphql.Array, len(res))
  2166  	var wg sync.WaitGroup
  2167  
  2168  	isLen1 := len(res) == 1
  2169  	if !isLen1 {
  2170  		wg.Add(len(res))
  2171  	}
  2172  
  2173  	for idx1 := range res {
  2174  		idx1 := idx1
  2175  		rctx := &graphql.ResolverContext{
  2176  			Index:  &idx1,
  2177  			Result: &res[idx1],
  2178  		}
  2179  		ctx := graphql.WithResolverContext(ctx, rctx)
  2180  		f := func(idx1 int) {
  2181  			if !isLen1 {
  2182  				defer wg.Done()
  2183  			}
  2184  			arr1[idx1] = func() graphql.Marshaler {
  2185  
  2186  				return ec.___InputValue(ctx, field.Selections, &res[idx1])
  2187  			}()
  2188  		}
  2189  		if isLen1 {
  2190  			f(idx1)
  2191  		} else {
  2192  			go f(idx1)
  2193  		}
  2194  
  2195  	}
  2196  	wg.Wait()
  2197  	return arr1
  2198  }
  2199  
  2200  // nolint: vetshadow
  2201  func (ec *executionContext) ___Type_ofType(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler {
  2202  	ctx = ec.Tracer.StartFieldExecution(ctx, field)
  2203  	defer func() { ec.Tracer.EndFieldExecution(ctx) }()
  2204  	rctx := &graphql.ResolverContext{
  2205  		Object: "__Type",
  2206  		Args:   nil,
  2207  		Field:  field,
  2208  	}
  2209  	ctx = graphql.WithResolverContext(ctx, rctx)
  2210  	ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
  2211  	resTmp := ec.FieldMiddleware(ctx, obj, func(rctx context.Context) (interface{}, error) {
  2212  		ctx = rctx // use context from middleware stack in children
  2213  		return obj.OfType(), nil
  2214  	})
  2215  	if resTmp == nil {
  2216  		return graphql.Null
  2217  	}
  2218  	res := resTmp.(*introspection.Type)
  2219  	rctx.Result = res
  2220  	ctx = ec.Tracer.StartFieldChildExecution(ctx)
  2221  
  2222  	if res == nil {
  2223  		return graphql.Null
  2224  	}
  2225  
  2226  	return ec.___Type(ctx, field.Selections, res)
  2227  }
  2228  
  2229  func UnmarshalTodoInput(v interface{}) (TodoInput, error) {
  2230  	var it TodoInput
  2231  	var asMap = v.(map[string]interface{})
  2232  
  2233  	for k, v := range asMap {
  2234  		switch k {
  2235  		case "text":
  2236  			var err error
  2237  			it.Text, err = graphql.UnmarshalString(v)
  2238  			if err != nil {
  2239  				return it, err
  2240  			}
  2241  		case "done":
  2242  			var err error
  2243  			var ptr1 bool
  2244  			if v != nil {
  2245  				ptr1, err = graphql.UnmarshalBoolean(v)
  2246  				it.Done = &ptr1
  2247  			}
  2248  
  2249  			if err != nil {
  2250  				return it, err
  2251  			}
  2252  		}
  2253  	}
  2254  
  2255  	return it, nil
  2256  }
  2257  
  2258  func (ec *executionContext) FieldMiddleware(ctx context.Context, obj interface{}, next graphql.Resolver) (ret interface{}) {
  2259  	defer func() {
  2260  		if r := recover(); r != nil {
  2261  			ec.Error(ctx, ec.Recover(ctx, r))
  2262  			ret = nil
  2263  		}
  2264  	}()
  2265  	rctx := graphql.GetResolverContext(ctx)
  2266  	for _, d := range rctx.Field.Definition.Directives {
  2267  		switch d.Name {
  2268  		case "hasRole":
  2269  			if ec.directives.HasRole != nil {
  2270  				rawArgs := d.ArgumentMap(ec.Variables)
  2271  				args, err := dir_hasRole_args(rawArgs)
  2272  				if err != nil {
  2273  					ec.Error(ctx, err)
  2274  					return nil
  2275  				}
  2276  				n := next
  2277  				next = func(ctx context.Context) (interface{}, error) {
  2278  					return ec.directives.HasRole(ctx, obj, n, args["role"].(Role))
  2279  				}
  2280  			}
  2281  		}
  2282  	}
  2283  	res, err := ec.ResolverMiddleware(ctx, next)
  2284  	if err != nil {
  2285  		ec.Error(ctx, err)
  2286  		return nil
  2287  	}
  2288  	return res
  2289  }
  2290  
  2291  func (ec *executionContext) introspectSchema() (*introspection.Schema, error) {
  2292  	if ec.DisableIntrospection {
  2293  		return nil, errors.New("introspection disabled")
  2294  	}
  2295  	return introspection.WrapSchema(parsedSchema), nil
  2296  }
  2297  
  2298  func (ec *executionContext) introspectType(name string) (*introspection.Type, error) {
  2299  	if ec.DisableIntrospection {
  2300  		return nil, errors.New("introspection disabled")
  2301  	}
  2302  	return introspection.WrapTypeFromDef(parsedSchema, parsedSchema.Types[name]), nil
  2303  }
  2304  
  2305  var parsedSchema = gqlparser.MustLoadSchema(
  2306  	&ast.Source{Name: "schema.graphql", Input: `schema {
  2307      query: MyQuery
  2308      mutation: MyMutation
  2309  }
  2310  
  2311  type MyQuery {
  2312      todo(id: Int!): Todo
  2313      lastTodo: Todo
  2314      todos: [Todo!]!
  2315  }
  2316  
  2317  type MyMutation {
  2318      createTodo(todo: TodoInput!): Todo!
  2319      updateTodo(id: Int!, changes: Map!): Todo
  2320  }
  2321  
  2322  type Todo {
  2323      id: Int!
  2324      text: String!
  2325      done: Boolean! @hasRole(role: OWNER) # only the owner can see if a todo is done
  2326  }
  2327  
  2328  "Passed to createTodo to create a new todo"
  2329  input TodoInput {
  2330      "The body text"
  2331      text: String!
  2332      "Is it done already?"
  2333      done: Boolean
  2334  }
  2335  
  2336  scalar Map
  2337  
  2338  "Prevents access to a field if the user doesnt have the matching role"
  2339  directive @hasRole(role: Role!) on FIELD_DEFINITION
  2340  
  2341  enum Role {
  2342      ADMIN
  2343      OWNER
  2344  }
  2345  `},
  2346  )