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)

定義した型がどのような扱いとなるのかについてはGraphQLの構成要素で書いた。