Hey, finally got time to come back to using gqlgen-sqlboiler.
I'm running into another issue.
Here is my convert_plugin.go
package main
import (
"fmt"
"os"
"github.com/99designs/gqlgen/api"
"github.com/99designs/gqlgen/codegen/config"
gbgen "github.com/web-ridge/gqlgen-sqlboiler/v3"
)
func main() {
cfg, err := config.LoadConfigFromDefaultLocations()
if err != nil {
fmt.Fprintln(os.Stderr, "failed to load config", err.Error())
os.Exit(2)
}
output := gbgen.Config{
Directory: "generated/graphql/helpers",
// Directory: "helpers", // supports root or sub directories
PackageName: "helpers",
}
backend := gbgen.Config{
Directory: "generated/db/models",
// Directory: "models",
PackageName: "models",
}
frontend := gbgen.Config{
Directory: "generated/graphql/models",
// Directory: "graphql_models",
PackageName: "gqlmodels",
}
if err = gbgen.SchemaWrite(
gbgen.SchemaConfig{
BoilerModelDirectory: backend,
// Directives: []string{"IsAuthenticated"},
// GenerateBatchCreate: false, // Not implemented yet
GenerateMutations: true,
GenerateBatchDelete: false,
GenerateBatchUpdate: false,
},
"schema/schema.graphqls",
gbgen.SchemaGenerateConfig{
MergeSchema: false, // uses three way merge to keep your customization
},
); err != nil {
fmt.Println("error while trying to generate schema.graphql")
fmt.Fprintln(os.Stderr, err.Error())
os.Exit(3)
}
if err = api.Generate(cfg,
api.AddPlugin(gbgen.NewConvertPlugin(
output, // directory where convert.go, convert_input.go and preload.go should live
backend, // directory where sqlboiler files are put
frontend, // directory where gqlgen models live
gbgen.ConvertPluginConfig{
//UseReflectWorkaroundForSubModelFilteringInPostgresIssue25: true, // see issue #25 on GitHub
},
)),
api.AddPlugin(gbgen.NewResolverPlugin(
output,
backend,
frontend,
"", // leave empty if you don't have auth
)),
); err != nil {
fmt.Println("error while trying generate resolver and converts")
fmt.Fprintln(os.Stderr, err.Error())
os.Exit(3)
}
}
When I run it I get the following output/error
% go run convert_plugin.go
...
9:53PM DBG write GraphQL schema to disk bytes=36923 file=schema/schema.graphqls
9:53PM DBG [convert] get boiler models
9:53PM DBG [convert] get extra's from schema
9:53PM DBG [convert] get model with information
9:53PM DBG [convert] render preload.gotpl
9:53PM DBG [convert] render convert.gotpl
9:53PM DBG [convert] render convert_input.gotpl
9:53PM DBG [convert] render filter.gotpl
9:53PM DBG [convert] render sort.gotpl
9:54PM DBG [resolver] get boiler models
9:54PM DBG [resolver] get models with information
9:54PM DBG [resolver] generate file
error while trying generate resolver and converts
resolvergen: convert.gotpl: template: convert.gotpl:30:18: executing "convert.gotpl" at <.Enums>: can't evaluate field Enums in type *gbgen.ResolverBuild
exit status 3
It seems strange to me that the resolver is using the convert.gotpl so I dug in a little further.
This Render statement doesn't include a Template option is this ok?
|
err := templates.Render(templates.Options{ |
Locally I modified that file to
err := templates.Render(templates.Options{
Template: getTemplate("resolver.gotpl"),
PackageName: data.Config.Resolver.Package,
PackageDoc: `
// This file will be automatically regenerated based on the schema, any resolver implementations
// will be copied through when generating and any unknown code will be moved to the end.`,
Filename: filename,
Data: resolverBuild,
Packages: data.Config.Packages,
})
When I run convert_plugin.go using the modified file I get the following output
% go run convert_plugin.go
...
9:57PM DBG write GraphQL schema to disk bytes=36923 file=schema/schema.graphqls
9:58PM DBG [convert] get boiler models
9:58PM DBG [convert] get extra's from schema
9:58PM DBG [convert] get model with information
9:58PM DBG [convert] render preload.gotpl
9:58PM DBG [convert] render convert.gotpl
9:58PM DBG [convert] render convert_input.gotpl
9:58PM DBG [convert] render filter.gotpl
9:58PM DBG [convert] render sort.gotpl
gofmt failed on schema.resolvers.go: /Users/steve/src/github.com/sjhitchner/soapcalc/backend/graphql/resolver/schema.resolvers.go:475:8: expected 'IDENT', found '=' (and 607 more errors)
9:58PM DBG [resolver] get boiler models
9:58PM DBG [resolver] get models with information
9:58PM DBG [resolver] generate file
gofmt failed on schema.resolvers.go: /Users/steve/src/github.com/sjhitchner/soapcalc/backend/graphql/resolver/schema.resolvers.go:64:8: expected 'IDENT', found '=' (and 911 more errors)
error while trying generate resolver and converts
validation failed: packages.Load: /Users/steve/src/github.com/sjhitchner/soapcalc/backend/graphql/resolver/schema.resolvers.go:64:8: expected 'IDENT', found '='
/Users/steve/src/github.com/sjhitchner/soapcalc/backend/graphql/resolver/schema.resolvers.go:64:8: missing constant value
/Users/steve/src/github.com/sjhitchner/soapcalc/backend/graphql/resolver/schema.resolvers.go:64:10: expected ';', found ""
/Users/steve/src/github.com/sjhitchner/soapcalc/backend/graphql/resolver/schema.resolvers.go:69:8: expected 'IDENT', found '='
/Users/steve/src/github.com/sjhitchner/soapcalc/backend/graphql/resolver/schema.resolvers.go:69:8: missing constant value
/Users/steve/src/github.com/sjhitchner/soapcalc/backend/graphql/resolver/schema.resolvers.go:69:10: expected ';', found ""
/Users/steve/src/github.com/sjhitchner/soapcalc/backend/graphql/resolver/schema.resolvers.go:74:8: expected 'IDENT', found '='
/Users/steve/src/github.com/sjhitchner/soapcalc/backend/graphql/resolver/schema.resolvers.go:74:8: missing constant value
/Users/steve/src/github.com/sjhitchner/soapcalc/backend/graphql/resolver/schema.resolvers.go:74:10: expected ';', found ""
/Users/steve/src/github.com/sjhitchner/soapcalc/backend/graphql/resolver/schema.resolvers.go:79:8: expected 'IDENT', found '='
/Users/steve/src/github.com/sjhitchner/soapcalc/backend/graphql/resolver/schema.resolvers.go:79:8: missing constant value
/Users/steve/src/github.com/sjhitchner/soapcalc/backend/graphql/resolver/schema.resolvers.go:79:10: expected ';', found ""
It looks like the template executes correctly but the resolver code generated are not valid Go.
const inputKey = "input"
const = ""
func (r *mutationResolver) CreateAdditive (ctx context.Context, input gmodels.AdditiveCreateInput) (*gmodels.AdditivePayload, error) {
}
const = ""
func (r *mutationResolver) UpdateAdditive (ctx context.Context, id string, input gmodels.AdditiveUpdateInput) (*gmodels.AdditivePayload, error) {
}
const = ""
func (r *mutationResolver) DeleteAdditive (ctx context.Context, id string) (*gmodels.AdditiveDeletePayload, error) {
}
const = ""
func (r *mutationResolver) CreateAdditiveInventory (ctx context.Context, input gmodels.AdditiveInventoryCreateInput) (*gmodels.AdditiveInventoryPayload, error) {
}
const = ""
func (r *mutationResolver) UpdateAdditiveInventory (ctx context.Context, id string, input gmodels.AdditiveInventoryUpdateInput) (*gmodels.AdditiveInventoryPayload, error) {
}
Any ideas?
Hey, finally got time to come back to using gqlgen-sqlboiler.
I'm running into another issue.
Here is my convert_plugin.go
When I run it I get the following output/error
It seems strange to me that the
resolveris using theconvert.gotplso I dug in a little further.This Render statement doesn't include a
Templateoption is this ok?gqlgen-sqlboiler/resolver.go
Line 191 in 049ffb3
Locally I modified that file to
When I run
convert_plugin.gousing the modified file I get the following outputIt looks like the template executes correctly but the resolver code generated are not valid Go.
Any ideas?