...
1 package servergen
2
3 import (
4 _ "embed"
5 "errors"
6 "io/fs"
7 "log"
8 "os"
9
10 "github.com/99designs/gqlgen/codegen"
11 "github.com/99designs/gqlgen/codegen/templates"
12 "github.com/99designs/gqlgen/plugin"
13 )
14
15
16 var serverTemplate string
17
18 func New(filename string) plugin.Plugin {
19 return &Plugin{filename}
20 }
21
22 type Plugin struct {
23 filename string
24 }
25
26 var _ plugin.CodeGenerator = &Plugin{}
27
28 func (m *Plugin) Name() string {
29 return "servergen"
30 }
31
32 func (m *Plugin) GenerateCode(data *codegen.Data) error {
33 serverBuild := &ServerBuild{
34 ExecPackageName: data.Config.Exec.ImportPath(),
35 ResolverPackageName: data.Config.Resolver.ImportPath(),
36 }
37
38 if _, err := os.Stat(m.filename); errors.Is(err, fs.ErrNotExist) {
39 return templates.Render(templates.Options{
40 PackageName: "main",
41 Filename: m.filename,
42 Data: serverBuild,
43 Packages: data.Config.Packages,
44 Template: serverTemplate,
45 })
46 }
47
48 log.Printf("Skipped server: %s already exists\n", m.filename)
49 return nil
50 }
51
52 type ServerBuild struct {
53 codegen.Data
54
55 ExecPackageName string
56 ResolverPackageName string
57 }
58
View as plain text