99designs / 99designs/gqlgen

Alias types are not referred as alises in the resolver

Abierto
#3,265 0 comentarios 3 reacciones 0 asignados Ver en GitHub
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

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.