github.com/maeglindeveloper/gqlgen@v0.13.1-0.20210413081235-57808b12a0a0/plugin/servergen/server.go (about)

     1  package servergen
     2  
     3  import (
     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  
    13  func New(filename string) plugin.Plugin {
    14  	return &Plugin{filename}
    15  }
    16  
    17  type Plugin struct {
    18  	filename string
    19  }
    20  
    21  var _ plugin.CodeGenerator = &Plugin{}
    22  
    23  func (m *Plugin) Name() string {
    24  	return "servergen"
    25  }
    26  func (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  			Packages:    data.Config.Packages,
    38  		})
    39  	}
    40  
    41  	log.Printf("Skipped server: %s already exists\n", m.filename)
    42  	return nil
    43  }
    44  
    45  type ServerBuild struct {
    46  	codegen.Data
    47  
    48  	ExecPackageName     string
    49  	ResolverPackageName string
    50  }