1package resolvergen
2
3import (
4 "log"
5 "os"
6
7 "github.com/99designs/gqlgen/codegen"
8 "github.com/99designs/gqlgen/codegen/templates"
9 "github.com/99designs/gqlgen/plugin"
10 "github.com/pkg/errors"
11)
12
13func New() plugin.Plugin {
14 return &Plugin{}
15}
16
17type Plugin struct{}
18
19var _ plugin.CodeGenerator = &Plugin{}
20
21func (m *Plugin) Name() string {
22 // TODO: typo, should be resolvergen
23 return "resovlergen"
24}
25func (m *Plugin) GenerateCode(data *codegen.Data) error {
26 if !data.Config.Resolver.IsDefined() {
27 return nil
28 }
29
30 resolverBuild := &ResolverBuild{
31 Data: data,
32 PackageName: data.Config.Resolver.Package,
33 ResolverType: data.Config.Resolver.Type,
34 }
35 filename := data.Config.Resolver.Filename
36
37 if _, err := os.Stat(filename); os.IsNotExist(errors.Cause(err)) {
38 return templates.Render(templates.Options{
39 PackageName: data.Config.Resolver.Package,
40 Filename: data.Config.Resolver.Filename,
41 Data: resolverBuild,
42 })
43 }
44
45 log.Printf("Skipped resolver: %s already exists\n", filename)
46 return nil
47}
48
49type ResolverBuild struct {
50 *codegen.Data
51
52 PackageName string
53 ResolverType string
54}