Skip to content

gqlgenではカスタムデータ型を定義できる

gqlgen.ymlのmodelsセクションは利用可能な型を列挙するで公式の型を参照したが、ユーザー独自の型を定義してそれを models セクションに利用できる。このとき、定義の方法は2通りの方法がある。

Goのコードにおいてtypeを使って自分で定義する型の場合は MarshalGQLUnmarshalGQL を実装すればいい。

type UserID int
func (UserID) MarshalGQL(w io.Writer)
func (UserID) UnmarshalGQL(v any) error

もうひとつ、int64 のように事前に定義された型または MarshalGQL 等を実装できない型の場合は、一定の規則に沿った関数名を実装する。

func MarshalUserID(int64) graphql.Marshaler
func UnmarshalUserID(v any) (int64, error)