Resolver interface types and function names are not Go-ified
- Ngôn ngữ chính
- Go
- Star
- 10.8k
- Fork
- 1.3k
- Merge trung bình
- 2 ngày 36 phút
- Pull request đã merge (30 ngày)
- 26
Mô tả
### What happened?
Somewhat related to https://github.com/99designs/gqlgen/issues/1383.
The resolver interface types that get generated and the functions to get those resolvers from the `ResolverRoot` don't follow the standard Go conventions on capitalization, even though these appear to get followed for the generated field names within model structs. This causes issues with linters such as `revive` since they'll trip the naming convention rules on the files that have the resolver implementations.
On a similar note, this also happens for generated model names, but that's less of an issue since they live within a generated file which linters are able to detect easily so they don't trip the rules.
### What did you expect?
All generated types and names are capitalized consistently.
### Minimal graphql.schema and models to reproduce
GraphQL schema:
```graphql
type TestType {
vmDetail: VmDetail
}
type VmDetail {
someVmField: String
}
```
Config:
```yaml
schema:
- schema.graphql
exec:
filename: generated/generated.go
package: generated
model:
filename: gqlmodel/models_gen.go
package: gqlmodel
autobind:
- github.com/test/gqlmodel
models:
resolver:
filename: resolver/resolver.go
package: resolver
type: Resolver
```
Generated resolver.go:
```go
package resolver
// THIS CODE IS A STARTING POINT ONLY. IT WILL NOT BE UPDATED WITH SCHEMA CHANGES.
import (
"context"
"github.com/test/generated"
"github.com/test/gqlmodel"
)
type Resolver struct{}
// // foo
func (r *testTypeResolver) VMDetail(ctx context.Context, obj *gqlmodel.TestType) (*gqlmodel.VmDetail, error) {
panic("not implemented")
}
// // foo
func (r *vmDetailResolver) SomeVMField(ctx context.Context, obj *gqlmodel.VmDetail) (*string, error) {
panic("not implemented")
}
// TestType returns generated.TestTypeResolver implementation.
func (r *Resolver) TestType() generated.TestTypeResolver { return &testTypeResolver{r} }
// VmDetail returns generated.VmDetailResolver implementation.
func (r *Resolver) VmDetail() generated.VmDetailResolver { return &vmDetailResolver{r} }
type testTypeResolver struct{ *Resolver }
type vmDetailResolver struct{ *Resolver }
```
Note the capitalization differences for "vm":
```
func (r *testTypeResolver) VMDetail(ctx context.Context, obj *gqlmodel.TestType) (*gqlmodel.VmDetail, error) {
^^ ^^
func (r *Resolver) VmDetail() generated.VmDetailResolver { return &vmDetailResolver{r} }
^^ ^^
```
### versions
- `go run github.com/99designs/gqlgen version`?
v0.17.20
- `go version`?
go version go1.19 linux/amd64
Hướng dẫn đóng góp
Đánh giá
Issue này chưa được đánh giá.