resolver.go

 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}