github.com/fortexxx/gqlgen@v0.10.3-0.20191216030626-ca5ea8b21ead/codegen/interface.gotpl (about)

     1  {{- range $interface := .Interfaces }}
     2  
     3  func (ec *executionContext) _{{$interface.Name}}(ctx context.Context, sel ast.SelectionSet, obj {{$interface.Type | ref}}) graphql.Marshaler {
     4  	switch obj := (obj).(type) {
     5  	case nil:
     6  		return graphql.Null
     7  	{{- range $implementor := $interface.Implementors }}
     8  		{{- if $implementor.ValueReceiver }}
     9  			case {{$implementor.Type | ref}}:
    10  				return ec._{{$implementor.Name}}(ctx, sel, &obj)
    11  		{{- end}}
    12  		case *{{$implementor.Type | ref}}:
    13  			if obj == nil {
    14  				return graphql.Null
    15  			}
    16  			return ec._{{$implementor.Name}}(ctx, sel, obj)
    17  	{{- end }}
    18  	default:
    19  		panic(fmt.Errorf("unexpected type %T", obj))
    20  	}
    21  }
    22  
    23  {{- end }}