github.com/pouriasharifi/gqlgen@v0.7.2/codegen/templates/generated.gotpl (about) 1 // Code generated by github.com/99designs/gqlgen, DO NOT EDIT. 2 3 package {{ .PackageName }} 4 5 import ( 6 %%%IMPORTS%%% 7 8 {{ reserveImport "context" }} 9 {{ reserveImport "fmt" }} 10 {{ reserveImport "io" }} 11 {{ reserveImport "strconv" }} 12 {{ reserveImport "time" }} 13 {{ reserveImport "sync" }} 14 {{ reserveImport "errors" }} 15 {{ reserveImport "bytes" }} 16 17 {{ reserveImport "github.com/vektah/gqlparser" }} 18 {{ reserveImport "github.com/vektah/gqlparser/ast" }} 19 {{ reserveImport "github.com/99designs/gqlgen/graphql" }} 20 {{ reserveImport "github.com/99designs/gqlgen/graphql/introspection" }} 21 ) 22 23 // NewExecutableSchema creates an ExecutableSchema from the ResolverRoot interface. 24 func NewExecutableSchema(cfg Config) graphql.ExecutableSchema { 25 return &executableSchema{ 26 resolvers: cfg.Resolvers, 27 directives: cfg.Directives, 28 complexity: cfg.Complexity, 29 } 30 } 31 32 type Config struct { 33 Resolvers ResolverRoot 34 Directives DirectiveRoot 35 Complexity ComplexityRoot 36 } 37 38 type ResolverRoot interface { 39 {{- range $object := .Objects -}} 40 {{ if $object.HasResolvers -}} 41 {{$object.GQLType}}() {{$object.GQLType}}Resolver 42 {{ end }} 43 {{- end }} 44 } 45 46 type DirectiveRoot struct { 47 {{ range $directive := .Directives }} 48 {{ $directive.Declaration }} 49 {{ end }} 50 } 51 52 type ComplexityRoot struct { 53 {{ range $object := .Objects }} 54 {{ if not $object.IsReserved -}} 55 {{ $object.GQLType|toCamel }} struct { 56 {{ range $field := $object.Fields -}} 57 {{ if not $field.IsReserved -}} 58 {{ $field.GQLName|toCamel }} {{ $field.ComplexitySignature }} 59 {{ end }} 60 {{- end }} 61 } 62 {{- end }} 63 {{ end }} 64 } 65 66 {{ range $object := .Objects -}} 67 {{ if $object.HasResolvers }} 68 type {{$object.GQLType}}Resolver interface { 69 {{ range $field := $object.Fields -}} 70 {{ $field.ShortResolverDeclaration }} 71 {{ end }} 72 } 73 {{- end }} 74 {{- end }} 75 76 {{ range $object := .Objects -}} 77 {{ range $field := $object.Fields -}} 78 {{ if $field.Args }} 79 func {{ $field.ArgsFunc }}(rawArgs map[string]interface{}) (map[string]interface{}, error) { 80 {{ template "args.gotpl" $field.Args }} 81 } 82 {{ end }} 83 {{ end }} 84 {{- end }} 85 86 {{ range $directive := .Directives }} 87 {{ if $directive.Args }} 88 func {{ $directive.ArgsFunc }}(rawArgs map[string]interface{}) (map[string]interface{}, error) { 89 {{ template "args.gotpl" $directive.Args }} 90 } 91 {{ end }} 92 {{ end }} 93 94 type executableSchema struct { 95 resolvers ResolverRoot 96 directives DirectiveRoot 97 complexity ComplexityRoot 98 } 99 100 func (e *executableSchema) Schema() *ast.Schema { 101 return parsedSchema 102 } 103 104 func (e *executableSchema) Complexity(typeName, field string, childComplexity int, rawArgs map[string]interface{}) (int, bool) { 105 switch typeName + "." + field { 106 {{ range $object := .Objects }} 107 {{ if not $object.IsReserved }} 108 {{ range $field := $object.Fields }} 109 {{ if not $field.IsReserved }} 110 case "{{$object.GQLType}}.{{$field.GQLName}}": 111 if e.complexity.{{$object.GQLType|toCamel}}.{{$field.GQLName|toCamel}} == nil { 112 break 113 } 114 {{ if $field.Args }} 115 args, err := {{ $field.ArgsFunc }}(rawArgs) 116 if err != nil { 117 return 0, false 118 } 119 {{ end }} 120 return e.complexity.{{$object.GQLType|toCamel}}.{{$field.GQLName|toCamel}}(childComplexity{{if $field.Args}}, {{$field.ComplexityArgs}} {{end}}), true 121 {{ end }} 122 {{ end }} 123 {{ end }} 124 {{ end }} 125 } 126 return 0, false 127 } 128 129 func (e *executableSchema) Query(ctx context.Context, op *ast.OperationDefinition) *graphql.Response { 130 {{- if .QueryRoot }} 131 ec := executionContext{graphql.GetRequestContext(ctx), e} 132 133 buf := ec.RequestMiddleware(ctx, func(ctx context.Context) []byte { 134 data := ec._{{.QueryRoot.GQLType}}(ctx, op.SelectionSet) 135 var buf bytes.Buffer 136 data.MarshalGQL(&buf) 137 return buf.Bytes() 138 }) 139 140 return &graphql.Response{ 141 Data: buf, 142 Errors: ec.Errors, 143 Extensions: ec.Extensions, } 144 {{- else }} 145 return graphql.ErrorResponse(ctx, "queries are not supported") 146 {{- end }} 147 } 148 149 func (e *executableSchema) Mutation(ctx context.Context, op *ast.OperationDefinition) *graphql.Response { 150 {{- if .MutationRoot }} 151 ec := executionContext{graphql.GetRequestContext(ctx), e} 152 153 buf := ec.RequestMiddleware(ctx, func(ctx context.Context) []byte { 154 data := ec._{{.MutationRoot.GQLType}}(ctx, op.SelectionSet) 155 var buf bytes.Buffer 156 data.MarshalGQL(&buf) 157 return buf.Bytes() 158 }) 159 160 return &graphql.Response{ 161 Data: buf, 162 Errors: ec.Errors, 163 Extensions: ec.Extensions, 164 } 165 {{- else }} 166 return graphql.ErrorResponse(ctx, "mutations are not supported") 167 {{- end }} 168 } 169 170 func (e *executableSchema) Subscription(ctx context.Context, op *ast.OperationDefinition) func() *graphql.Response { 171 {{- if .SubscriptionRoot }} 172 ec := executionContext{graphql.GetRequestContext(ctx), e} 173 174 next := ec._{{.SubscriptionRoot.GQLType}}(ctx, op.SelectionSet) 175 if ec.Errors != nil { 176 return graphql.OneShot(&graphql.Response{Data: []byte("null"), Errors: ec.Errors}) 177 } 178 179 var buf bytes.Buffer 180 return func() *graphql.Response { 181 buf := ec.RequestMiddleware(ctx, func(ctx context.Context) []byte { 182 buf.Reset() 183 data := next() 184 185 if data == nil { 186 return nil 187 } 188 data.MarshalGQL(&buf) 189 return buf.Bytes() 190 }) 191 192 if buf == nil { 193 return nil 194 } 195 196 return &graphql.Response{ 197 Data: buf, 198 Errors: ec.Errors, 199 Extensions: ec.Extensions, 200 } 201 } 202 {{- else }} 203 return graphql.OneShot(graphql.ErrorResponse(ctx, "subscriptions are not supported")) 204 {{- end }} 205 } 206 207 type executionContext struct { 208 *graphql.RequestContext 209 *executableSchema 210 } 211 212 {{- range $object := .Objects }} 213 {{ template "object.gotpl" $object }} 214 215 {{- range $field := $object.Fields }} 216 {{ template "field.gotpl" $field }} 217 {{ end }} 218 {{- end}} 219 220 {{- range $interface := .Interfaces }} 221 {{ template "interface.gotpl" $interface }} 222 {{- end }} 223 224 {{- range $input := .Inputs }} 225 {{ template "input.gotpl" $input }} 226 {{- end }} 227 228 func (ec *executionContext) FieldMiddleware(ctx context.Context, obj interface{}, next graphql.Resolver) (ret interface{}) { 229 defer func() { 230 if r := recover(); r != nil { 231 ec.Error(ctx, ec.Recover(ctx, r)) 232 ret = nil 233 } 234 }() 235 {{- if .Directives }} 236 rctx := graphql.GetResolverContext(ctx) 237 for _, d := range rctx.Field.Definition.Directives { 238 switch d.Name { 239 {{- range $directive := .Directives }} 240 case "{{$directive.Name}}": 241 if ec.directives.{{$directive.Name|ucFirst}} != nil { 242 {{- if $directive.Args }} 243 rawArgs := d.ArgumentMap(ec.Variables) 244 args, err := {{ $directive.ArgsFunc }}(rawArgs) 245 if err != nil { 246 ec.Error(ctx, err) 247 return nil 248 } 249 {{- end }} 250 n := next 251 next = func(ctx context.Context) (interface{}, error) { 252 return ec.directives.{{$directive.Name|ucFirst}}({{$directive.CallArgs}}) 253 } 254 } 255 {{- end }} 256 } 257 } 258 {{- end }} 259 res, err := ec.ResolverMiddleware(ctx, next) 260 if err != nil { 261 ec.Error(ctx, err) 262 return nil 263 } 264 return res 265 } 266 267 func (ec *executionContext) introspectSchema() (*introspection.Schema, error) { 268 if ec.DisableIntrospection { 269 return nil, errors.New("introspection disabled") 270 } 271 return introspection.WrapSchema(parsedSchema), nil 272 } 273 274 func (ec *executionContext) introspectType(name string) (*introspection.Type, error) { 275 if ec.DisableIntrospection { 276 return nil, errors.New("introspection disabled") 277 } 278 return introspection.WrapTypeFromDef(parsedSchema, parsedSchema.Types[name]), nil 279 } 280 281 var parsedSchema = gqlparser.MustLoadSchema( 282 {{- range $filename, $schema := .SchemaRaw }} 283 &ast.Source{Name: {{$filename|quote}}, Input: {{$schema|rawQuote}}}, 284 {{- end }} 285 )