github.com/99designs/gqlgen@v0.17.45/plugin/servergen/server.go (about) 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 //go:embed server.gotpl 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 }