/
templates.go
60 lines (50 loc) · 2.08 KB
/
templates.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package protoresolvergen
var templateProtoResolvers = `
{{ reserveImport "context" }}
{{ range $imp := .Imports }}
{{ if (ne $imp.Alias "") }}
{{ reserveImport $imp.Path $imp.Alias }}
{{ else }}
{{ reserveImport $imp.Path }}
{{ end }}
{{ end }}
{{ range $resolver := .Resolvers }}
func (r *{{ $resolver.ProtoImplementationName }}) {{ $resolver.GoFieldName }}{{ $resolver.ShortProtoResolverDeclaration }} {
{{ $resolver.ProtoResolverBody }}
}
{{ end }}
{{ range $obj := .Objects -}}
type {{ $obj | $.ProtoResolverImplementationName }} struct { *{{ $.ResolverTypeName }} }
{{ end }}
{{ if (ne .ProtoResolverRemainingSource "") }}
// !!! WARNING !!!
// The code below was going to be deleted when updating resolvers. It has been copied here so you have
// one last chance to move it out of harms way if you want. There are two reasons this happens:
// - When renaming or deleting a resolver the old code will be put in here. You can safely delete
// it when you're done.
// - You have helper methods in this file. Move them out to keep these resolver files clean.
{{ .ProtoResolverRemainingSource }}
{{ end }}
`
var templateResolvers = `
{{ reserveImport "context" }}
{{ range $resolver := .Resolvers }}
func (r *{{ $resolver.ImplementationName }}) {{ $resolver.GoFieldName }}{{ $resolver.ShortResolverDeclaration }} {
// This function body is generated by github.com/izumin5210/remixer. DO NOT EDIT.
resp, err := (&{{ $resolver.ProtoImplementationName }}{Resolver: r.Resolver}).{{ $resolver.GoFieldName }}({{ $resolver.ArgList }})
if err != nil {
return nil, err
}
{{ if $resolver.TypeReference.IsScalar -}}
return resp, nil
{{ else -}}
return {{ $resolver.ResolverModelFromProtoFunc }}(resp), nil
{{ end -}}
}
{{ end }}
{{ range $obj := .Objects -}}
// {{$obj.Name}} returns {{ $obj.ResolverInterface | ref }} implementation.
func (r *{{$.ResolverTypeName}}) {{$obj.Name}}() {{ $obj.ResolverInterface | ref }} { return &{{ $obj | $.ResolverImplementationName }}{r} }
type {{ $obj | $.ResolverImplementationName }} struct { *{{ $.ResolverTypeName }} }
{{ end -}}
`