github.com/HaswinVidanage/gqlgen@v0.8.1-0.20220609041233-69528c1bf712/plugin/resolvergen/resolver.go (about)

     1  package resolvergen
     2  
     3  import (
     4  	"log"
     5  	"os"
     6  
     7  	"github.com/HaswinVidanage/gqlgen/codegen"
     8  	"github.com/HaswinVidanage/gqlgen/codegen/templates"
     9  	"github.com/HaswinVidanage/gqlgen/plugin"
    10  	"github.com/pkg/errors"
    11  )
    12  
    13  func New() plugin.Plugin {
    14  	return &Plugin{}
    15  }
    16  
    17  type Plugin struct{}
    18  
    19  var _ plugin.CodeGenerator = &Plugin{}
    20  
    21  func (m *Plugin) Name() string {
    22  	return "resovlergen"
    23  }
    24  func (m *Plugin) GenerateCode(data *codegen.Data) error {
    25  	if !data.Config.Resolver.IsDefined() {
    26  		return nil
    27  	}
    28  
    29  	resolverBuild := &ResolverBuild{
    30  		Data:         data,
    31  		PackageName:  data.Config.Resolver.Package,
    32  		ResolverType: data.Config.Resolver.Type,
    33  	}
    34  	filename := data.Config.Resolver.Filename
    35  
    36  	if _, err := os.Stat(filename); os.IsNotExist(errors.Cause(err)) {
    37  		return templates.Render(templates.Options{
    38  			PackageName: data.Config.Resolver.Package,
    39  			Filename:    data.Config.Resolver.Filename,
    40  			Data:        resolverBuild,
    41  		})
    42  	}
    43  
    44  	log.Printf("Skipped resolver: %s already exists\n", filename)
    45  	return nil
    46  }
    47  
    48  type ResolverBuild struct {
    49  	*codegen.Data
    50  
    51  	PackageName  string
    52  	ResolverType string
    53  }