Alias types are not referred as alises in the resolver
- Lenguaje dominante
- Go
- Estrellas
- 10.8k
- Forks
- 1.3k
- Merge medio
- 2 d 36 min
- PR fusionados (30 d)
- 26
Descripción
### 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
Guía de contribución
Evaluación
Este issue todavía no se ha evaluado.