You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When referring an alias type in the models section of the gqlgen.yml and running go run github.com/99designs/gqlgen generate I get an error if the aliased type has implementations that are not exported.
What did you expect?
I expect it to use the alias reference, and not the underlying type.
import ("io")
type i struct{}
func (i i) Prefix() string { return "i" }
type IDXID = ID[i]
type Prefixer interface {
Prefix() string
}
type ID[T Prefixer] struct{}
func (id *ID[T]) UnmarshalGQL(v interface{}) error { return nil }
func (id ID[T]) MarshalGQL(w io.Writer) {}
With the implementation above it returns:
validation failed: packages.Load: -: # gqltest/graph
graph/generated.go:55:53: i not exported by package identifier
graph/generated.go:271:43: i not exported by package identifier
graph/generated.go:2612:139: i not exported by package identifier
graph/generated.go:2613:35: i not exported by package identifier
graph/generated.go:2618:145: i not exported by package identifier
graph/generated.go:2622:143: i not exported by package identifier
graph/generated.go:2623:41: i not exported by package identifier
graph/generated.go:2628:149: i not exported by package identifier
graph/schema.resolvers.go:14:76: i not exported by package identifier
If I make the reference exportable (change i to I), it works but the resolver looks like:
// ID is the resolver for the id field.
func (r *queryResolver) ID(ctx context.Context) (*identifier.ID[identifier.I], error) {
panic(fmt.Errorf("not implemented: ID - id"))
}
So it uses the identifier.ID[identifier.I] instead of identifier.IDXID
I would like for gqlgen to use the aliases I have defined and imported
versions
Latest version (master branch)
Tried both Go 1.22.5 and 1.23.0
The text was updated successfully, but these errors were encountered:
What happened?
When referring an alias type in the models section of the
gqlgen.yml
and runninggo run github.com/99designs/gqlgen generate
I get an error if the aliased type has implementations that are not exported.What did you expect?
I expect it to use the alias reference, and not the underlying type.
Minimal graphql.schema and models to reproduce
schema.graphql
gqlgen.yml
id.go
With the implementation above it returns:
If I make the reference exportable (change
i
toI
), it works but the resolver looks like:So it uses the
identifier.ID[identifier.I]
instead ofidentifier.IDXID
I would like for gqlgen to use the aliases I have defined and imported
versions
The text was updated successfully, but these errors were encountered: