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 return "resovlergen"
23}
24func (m *Plugin) GenerateCode(data *codegen.Data) error {
25 if !data.Config.Resolver.IsDefined() {
26 return nil
27 }
28
29 resolverBuild := &ResolverBuild{
30 Data: data,
31 PackageName: data.Config.Resolver.Package,
32 ResolverType: data.Config.Resolver.Type,
33 }
34 filename := data.Config.Resolver.Filename
35
36 if _, err := os.Stat(filename); os.IsNotExist(errors.Cause(err)) {
37 return templates.Render(templates.Options{
38 PackageName: data.Config.Resolver.Package,
39 Filename: data.Config.Resolver.Filename,
40 Data: resolverBuild,
41 })
42 }
43
44 log.Printf("Skipped resolver: %s already exists\n", filename)
45 return nil
46}
47
48type ResolverBuild struct {
49 *codegen.Data
50
51 PackageName string
52 ResolverType string
53}