Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Alias types are not referred as alises in the resolver #3265

Open
dnyg opened this issue Sep 11, 2024 · 0 comments
Open

Alias types are not referred as alises in the resolver #3265

dnyg opened this issue Sep 11, 2024 · 0 comments

Comments

@dnyg
Copy link

dnyg commented Sep 11, 2024

What happened?

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.

Minimal graphql.schema and models to reproduce

schema.graphql

scalar IDXID

type Query {
  id: IDXID!
}

gqlgen.yml

models:
  IDXID:
    model:
      - gqltest/pkg/identifier.IDXID

id.go

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant