github.com/operandinc/gqlgen@v0.16.1/plugin/servergen/server.go (about)

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