...

Source file src/github.com/99designs/gqlgen/plugin/servergen/server.go

Documentation: github.com/99designs/gqlgen/plugin/servergen

     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  }
    58  

View as plain text