99designs / 99designs/gqlgen

Alias types are not referred as alises in the resolver

未关闭
#3,265 0 条评论 3 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Go
星标
10.8k
派生
1.3k
平均合并
2 天 36 分钟
30 天内合并 PR
26

描述

### 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

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。