🙄

gqlgenの Getting Started でカスタムモデルが作れない問題を解決

2022/04/13に公開

対象者

gqlgenの Getting Started を試してる人。

Getting StartedのDon’t eagerly fetch the userが上手くいかない人

どんな問題が起きたか

チュートリアルに書いてある通り、graph/model/todo.goを作成し、コードをコピペする。
go run github.com/99designs/gqlgen generateを実行するが、以下のエラーが出る。

validation failed: packages.Load: [省略]/graph/model/todo.go:3:6: Todo redeclared in this block
[省略]/graph/model/models_gen.go:10:6:      other declaration of Todo

期待値

graph/schema.resolvers.goに以下のメソッドが自動生成されること。

func (r *todoResolver) User(ctx context.Context, obj *model.Todo) (*model.User, error) {
	// 
}

解決方法

gqlgen.ymlautobind:以下のパッケージ名のコメントアウトを解除する。

# gqlgen will search for any type names in the schema in these go packages
# if they match it will use them, otherwise it will generate them.
autobind:
- "github.com/[module_name]/graph/model" # ⇦コメントアウトされてるので解除したげる!

go run github.com/99designs/gqlgenのコマンドを実行

graph/schema.resolvers.goを見ると。。。

func (r *todoResolver) User(ctx context.Context, obj *model.Todo) (*model.User, error) {
	panic(fmt.Errorf("not implemented"))
}

できてる〜!

以上。

Discussion