1package servergen
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(filename string) plugin.Plugin {
14 return &Plugin{filename}
15}
16
17type Plugin struct {
18 filename string
19}
20
21var _ plugin.CodeGenerator = &Plugin{}
22
23func (m *Plugin) Name() string {
24 return "servergen"
25}
26func (m *Plugin) GenerateCode(data *codegen.Data) error {
27 serverBuild := &ServerBuild{
28 ExecPackageName: data.Config.Exec.ImportPath(),
29 ResolverPackageName: data.Config.Resolver.ImportPath(),
30 }
31
32 if _, err := os.Stat(m.filename); os.IsNotExist(errors.Cause(err)) {
33 return templates.Render(templates.Options{
34 PackageName: "main",
35 Filename: m.filename,
36 Data: serverBuild,
37 })
38 }
39
40 log.Printf("Skipped server: %s already exists\n", m.filename)
41 return nil
42}
43
44type ServerBuild struct {
45 codegen.Data
46
47 ExecPackageName string
48 ResolverPackageName string
49}