Files
genqlient/generate/testdata/snapshots/TestGenerate-ComplexNamedFragments.graphql-ComplexNamedFragments.graphql.go
T
Craig Silverstein e3227388fe Rename the query constant to have an underscore in it. (#241)
We got reports of conflicts with the old constant-name and symbols that
people were defining in their app.
2022-11-22 14:12:38 -08:00

1824 lines
53 KiB
Go

// Code generated by github.com/Khan/genqlient, DO NOT EDIT.
package test
import (
"encoding/json"
"fmt"
"github.com/Khan/genqlient/graphql"
"github.com/Khan/genqlient/internal/testutil"
)
// ComplexNamedFragmentsResponse is returned by ComplexNamedFragments on success.
type ComplexNamedFragmentsResponse struct {
QueryFragment `json:"-"`
}
// GetRandomItem returns ComplexNamedFragmentsResponse.RandomItem, and is useful for accessing the field via an interface.
func (v *ComplexNamedFragmentsResponse) GetRandomItem() InnerQueryFragmentRandomItemContent {
return v.QueryFragment.InnerQueryFragment.RandomItem
}
// GetRandomLeaf returns ComplexNamedFragmentsResponse.RandomLeaf, and is useful for accessing the field via an interface.
func (v *ComplexNamedFragmentsResponse) GetRandomLeaf() InnerQueryFragmentRandomLeafLeafContent {
return v.QueryFragment.InnerQueryFragment.RandomLeaf
}
// GetOtherLeaf returns ComplexNamedFragmentsResponse.OtherLeaf, and is useful for accessing the field via an interface.
func (v *ComplexNamedFragmentsResponse) GetOtherLeaf() InnerQueryFragmentOtherLeafLeafContent {
return v.QueryFragment.InnerQueryFragment.OtherLeaf
}
func (v *ComplexNamedFragmentsResponse) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*ComplexNamedFragmentsResponse
graphql.NoUnmarshalJSON
}
firstPass.ComplexNamedFragmentsResponse = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.QueryFragment)
if err != nil {
return err
}
return nil
}
type __premarshalComplexNamedFragmentsResponse struct {
RandomItem json.RawMessage `json:"randomItem"`
RandomLeaf json.RawMessage `json:"randomLeaf"`
OtherLeaf json.RawMessage `json:"otherLeaf"`
}
func (v *ComplexNamedFragmentsResponse) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *ComplexNamedFragmentsResponse) __premarshalJSON() (*__premarshalComplexNamedFragmentsResponse, error) {
var retval __premarshalComplexNamedFragmentsResponse
{
dst := &retval.RandomItem
src := v.QueryFragment.InnerQueryFragment.RandomItem
var err error
*dst, err = __marshalInnerQueryFragmentRandomItemContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal ComplexNamedFragmentsResponse.QueryFragment.InnerQueryFragment.RandomItem: %w", err)
}
}
{
dst := &retval.RandomLeaf
src := v.QueryFragment.InnerQueryFragment.RandomLeaf
var err error
*dst, err = __marshalInnerQueryFragmentRandomLeafLeafContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal ComplexNamedFragmentsResponse.QueryFragment.InnerQueryFragment.RandomLeaf: %w", err)
}
}
{
dst := &retval.OtherLeaf
src := v.QueryFragment.InnerQueryFragment.OtherLeaf
var err error
*dst, err = __marshalInnerQueryFragmentOtherLeafLeafContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal ComplexNamedFragmentsResponse.QueryFragment.InnerQueryFragment.OtherLeaf: %w", err)
}
}
return &retval, nil
}
// ContentFields includes the GraphQL fields of Content requested by the fragment ContentFields.
// The GraphQL type's documentation follows.
//
// Content is implemented by various types like Article, Video, and Topic.
//
// ContentFields is implemented by the following types:
// ContentFieldsArticle
// ContentFieldsVideo
// ContentFieldsTopic
type ContentFields interface {
implementsGraphQLInterfaceContentFields()
// GetName returns the interface-field "name" from its implementation.
GetName() string
// GetUrl returns the interface-field "url" from its implementation.
GetUrl() string
}
func (v *ContentFieldsArticle) implementsGraphQLInterfaceContentFields() {}
func (v *ContentFieldsVideo) implementsGraphQLInterfaceContentFields() {}
func (v *ContentFieldsTopic) implementsGraphQLInterfaceContentFields() {}
func __unmarshalContentFields(b []byte, v *ContentFields) error {
if string(b) == "null" {
return nil
}
var tn struct {
TypeName string `json:"__typename"`
}
err := json.Unmarshal(b, &tn)
if err != nil {
return err
}
switch tn.TypeName {
case "Article":
*v = new(ContentFieldsArticle)
return json.Unmarshal(b, *v)
case "Video":
*v = new(ContentFieldsVideo)
return json.Unmarshal(b, *v)
case "Topic":
*v = new(ContentFieldsTopic)
return json.Unmarshal(b, *v)
case "":
return fmt.Errorf(
"response was missing Content.__typename")
default:
return fmt.Errorf(
`unexpected concrete type for ContentFields: "%v"`, tn.TypeName)
}
}
func __marshalContentFields(v *ContentFields) ([]byte, error) {
var typename string
switch v := (*v).(type) {
case *ContentFieldsArticle:
typename = "Article"
result := struct {
TypeName string `json:"__typename"`
*ContentFieldsArticle
}{typename, v}
return json.Marshal(result)
case *ContentFieldsVideo:
typename = "Video"
result := struct {
TypeName string `json:"__typename"`
*ContentFieldsVideo
}{typename, v}
return json.Marshal(result)
case *ContentFieldsTopic:
typename = "Topic"
result := struct {
TypeName string `json:"__typename"`
*ContentFieldsTopic
}{typename, v}
return json.Marshal(result)
case nil:
return []byte("null"), nil
default:
return nil, fmt.Errorf(
`unexpected concrete type for ContentFields: "%T"`, v)
}
}
// ContentFields includes the GraphQL fields of Article requested by the fragment ContentFields.
// The GraphQL type's documentation follows.
//
// Content is implemented by various types like Article, Video, and Topic.
type ContentFieldsArticle struct {
Name string `json:"name"`
Url string `json:"url"`
}
// GetName returns ContentFieldsArticle.Name, and is useful for accessing the field via an interface.
func (v *ContentFieldsArticle) GetName() string { return v.Name }
// GetUrl returns ContentFieldsArticle.Url, and is useful for accessing the field via an interface.
func (v *ContentFieldsArticle) GetUrl() string { return v.Url }
// ContentFields includes the GraphQL fields of Topic requested by the fragment ContentFields.
// The GraphQL type's documentation follows.
//
// Content is implemented by various types like Article, Video, and Topic.
type ContentFieldsTopic struct {
Name string `json:"name"`
Url string `json:"url"`
}
// GetName returns ContentFieldsTopic.Name, and is useful for accessing the field via an interface.
func (v *ContentFieldsTopic) GetName() string { return v.Name }
// GetUrl returns ContentFieldsTopic.Url, and is useful for accessing the field via an interface.
func (v *ContentFieldsTopic) GetUrl() string { return v.Url }
// ContentFields includes the GraphQL fields of Video requested by the fragment ContentFields.
// The GraphQL type's documentation follows.
//
// Content is implemented by various types like Article, Video, and Topic.
type ContentFieldsVideo struct {
Name string `json:"name"`
Url string `json:"url"`
}
// GetName returns ContentFieldsVideo.Name, and is useful for accessing the field via an interface.
func (v *ContentFieldsVideo) GetName() string { return v.Name }
// GetUrl returns ContentFieldsVideo.Url, and is useful for accessing the field via an interface.
func (v *ContentFieldsVideo) GetUrl() string { return v.Url }
// InnerQueryFragment includes the GraphQL fields of Query requested by the fragment InnerQueryFragment.
// The GraphQL type's documentation follows.
//
// Query's description is probably ignored by almost all callers.
type InnerQueryFragment struct {
RandomItem InnerQueryFragmentRandomItemContent `json:"-"`
RandomLeaf InnerQueryFragmentRandomLeafLeafContent `json:"-"`
OtherLeaf InnerQueryFragmentOtherLeafLeafContent `json:"-"`
}
// GetRandomItem returns InnerQueryFragment.RandomItem, and is useful for accessing the field via an interface.
func (v *InnerQueryFragment) GetRandomItem() InnerQueryFragmentRandomItemContent { return v.RandomItem }
// GetRandomLeaf returns InnerQueryFragment.RandomLeaf, and is useful for accessing the field via an interface.
func (v *InnerQueryFragment) GetRandomLeaf() InnerQueryFragmentRandomLeafLeafContent {
return v.RandomLeaf
}
// GetOtherLeaf returns InnerQueryFragment.OtherLeaf, and is useful for accessing the field via an interface.
func (v *InnerQueryFragment) GetOtherLeaf() InnerQueryFragmentOtherLeafLeafContent {
return v.OtherLeaf
}
func (v *InnerQueryFragment) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*InnerQueryFragment
RandomItem json.RawMessage `json:"randomItem"`
RandomLeaf json.RawMessage `json:"randomLeaf"`
OtherLeaf json.RawMessage `json:"otherLeaf"`
graphql.NoUnmarshalJSON
}
firstPass.InnerQueryFragment = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
{
dst := &v.RandomItem
src := firstPass.RandomItem
if len(src) != 0 && string(src) != "null" {
err = __unmarshalInnerQueryFragmentRandomItemContent(
src, dst)
if err != nil {
return fmt.Errorf(
"unable to unmarshal InnerQueryFragment.RandomItem: %w", err)
}
}
}
{
dst := &v.RandomLeaf
src := firstPass.RandomLeaf
if len(src) != 0 && string(src) != "null" {
err = __unmarshalInnerQueryFragmentRandomLeafLeafContent(
src, dst)
if err != nil {
return fmt.Errorf(
"unable to unmarshal InnerQueryFragment.RandomLeaf: %w", err)
}
}
}
{
dst := &v.OtherLeaf
src := firstPass.OtherLeaf
if len(src) != 0 && string(src) != "null" {
err = __unmarshalInnerQueryFragmentOtherLeafLeafContent(
src, dst)
if err != nil {
return fmt.Errorf(
"unable to unmarshal InnerQueryFragment.OtherLeaf: %w", err)
}
}
}
return nil
}
type __premarshalInnerQueryFragment struct {
RandomItem json.RawMessage `json:"randomItem"`
RandomLeaf json.RawMessage `json:"randomLeaf"`
OtherLeaf json.RawMessage `json:"otherLeaf"`
}
func (v *InnerQueryFragment) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *InnerQueryFragment) __premarshalJSON() (*__premarshalInnerQueryFragment, error) {
var retval __premarshalInnerQueryFragment
{
dst := &retval.RandomItem
src := v.RandomItem
var err error
*dst, err = __marshalInnerQueryFragmentRandomItemContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal InnerQueryFragment.RandomItem: %w", err)
}
}
{
dst := &retval.RandomLeaf
src := v.RandomLeaf
var err error
*dst, err = __marshalInnerQueryFragmentRandomLeafLeafContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal InnerQueryFragment.RandomLeaf: %w", err)
}
}
{
dst := &retval.OtherLeaf
src := v.OtherLeaf
var err error
*dst, err = __marshalInnerQueryFragmentOtherLeafLeafContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal InnerQueryFragment.OtherLeaf: %w", err)
}
}
return &retval, nil
}
// InnerQueryFragmentOtherLeafArticle includes the requested fields of the GraphQL type Article.
type InnerQueryFragmentOtherLeafArticle struct {
Typename string `json:"__typename"`
ContentFieldsArticle `json:"-"`
}
// GetTypename returns InnerQueryFragmentOtherLeafArticle.Typename, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentOtherLeafArticle) GetTypename() string { return v.Typename }
// GetName returns InnerQueryFragmentOtherLeafArticle.Name, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentOtherLeafArticle) GetName() string { return v.ContentFieldsArticle.Name }
// GetUrl returns InnerQueryFragmentOtherLeafArticle.Url, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentOtherLeafArticle) GetUrl() string { return v.ContentFieldsArticle.Url }
func (v *InnerQueryFragmentOtherLeafArticle) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*InnerQueryFragmentOtherLeafArticle
graphql.NoUnmarshalJSON
}
firstPass.InnerQueryFragmentOtherLeafArticle = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.ContentFieldsArticle)
if err != nil {
return err
}
return nil
}
type __premarshalInnerQueryFragmentOtherLeafArticle struct {
Typename string `json:"__typename"`
Name string `json:"name"`
Url string `json:"url"`
}
func (v *InnerQueryFragmentOtherLeafArticle) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *InnerQueryFragmentOtherLeafArticle) __premarshalJSON() (*__premarshalInnerQueryFragmentOtherLeafArticle, error) {
var retval __premarshalInnerQueryFragmentOtherLeafArticle
retval.Typename = v.Typename
retval.Name = v.ContentFieldsArticle.Name
retval.Url = v.ContentFieldsArticle.Url
return &retval, nil
}
// InnerQueryFragmentOtherLeafLeafContent includes the requested fields of the GraphQL interface LeafContent.
//
// InnerQueryFragmentOtherLeafLeafContent is implemented by the following types:
// InnerQueryFragmentOtherLeafArticle
// InnerQueryFragmentOtherLeafVideo
// The GraphQL type's documentation follows.
//
// LeafContent represents content items that can't have child-nodes.
type InnerQueryFragmentOtherLeafLeafContent interface {
implementsGraphQLInterfaceInnerQueryFragmentOtherLeafLeafContent()
// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
GetTypename() string
}
func (v *InnerQueryFragmentOtherLeafArticle) implementsGraphQLInterfaceInnerQueryFragmentOtherLeafLeafContent() {
}
func (v *InnerQueryFragmentOtherLeafVideo) implementsGraphQLInterfaceInnerQueryFragmentOtherLeafLeafContent() {
}
func __unmarshalInnerQueryFragmentOtherLeafLeafContent(b []byte, v *InnerQueryFragmentOtherLeafLeafContent) error {
if string(b) == "null" {
return nil
}
var tn struct {
TypeName string `json:"__typename"`
}
err := json.Unmarshal(b, &tn)
if err != nil {
return err
}
switch tn.TypeName {
case "Article":
*v = new(InnerQueryFragmentOtherLeafArticle)
return json.Unmarshal(b, *v)
case "Video":
*v = new(InnerQueryFragmentOtherLeafVideo)
return json.Unmarshal(b, *v)
case "":
return fmt.Errorf(
"response was missing LeafContent.__typename")
default:
return fmt.Errorf(
`unexpected concrete type for InnerQueryFragmentOtherLeafLeafContent: "%v"`, tn.TypeName)
}
}
func __marshalInnerQueryFragmentOtherLeafLeafContent(v *InnerQueryFragmentOtherLeafLeafContent) ([]byte, error) {
var typename string
switch v := (*v).(type) {
case *InnerQueryFragmentOtherLeafArticle:
typename = "Article"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalInnerQueryFragmentOtherLeafArticle
}{typename, premarshaled}
return json.Marshal(result)
case *InnerQueryFragmentOtherLeafVideo:
typename = "Video"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalInnerQueryFragmentOtherLeafVideo
}{typename, premarshaled}
return json.Marshal(result)
case nil:
return []byte("null"), nil
default:
return nil, fmt.Errorf(
`unexpected concrete type for InnerQueryFragmentOtherLeafLeafContent: "%T"`, v)
}
}
// InnerQueryFragmentOtherLeafVideo includes the requested fields of the GraphQL type Video.
type InnerQueryFragmentOtherLeafVideo struct {
Typename string `json:"__typename"`
MoreVideoFields `json:"-"`
ContentFieldsVideo `json:"-"`
}
// GetTypename returns InnerQueryFragmentOtherLeafVideo.Typename, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentOtherLeafVideo) GetTypename() string { return v.Typename }
// GetId returns InnerQueryFragmentOtherLeafVideo.Id, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentOtherLeafVideo) GetId() *testutil.ID { return v.MoreVideoFields.Id }
// GetParent returns InnerQueryFragmentOtherLeafVideo.Parent, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentOtherLeafVideo) GetParent() *MoreVideoFieldsParentTopic {
return v.MoreVideoFields.Parent
}
// GetName returns InnerQueryFragmentOtherLeafVideo.Name, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentOtherLeafVideo) GetName() string { return v.ContentFieldsVideo.Name }
// GetUrl returns InnerQueryFragmentOtherLeafVideo.Url, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentOtherLeafVideo) GetUrl() string { return v.ContentFieldsVideo.Url }
func (v *InnerQueryFragmentOtherLeafVideo) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*InnerQueryFragmentOtherLeafVideo
graphql.NoUnmarshalJSON
}
firstPass.InnerQueryFragmentOtherLeafVideo = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.MoreVideoFields)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.ContentFieldsVideo)
if err != nil {
return err
}
return nil
}
type __premarshalInnerQueryFragmentOtherLeafVideo struct {
Typename string `json:"__typename"`
Id *testutil.ID `json:"id"`
Parent *MoreVideoFieldsParentTopic `json:"parent"`
Name string `json:"name"`
Url string `json:"url"`
}
func (v *InnerQueryFragmentOtherLeafVideo) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *InnerQueryFragmentOtherLeafVideo) __premarshalJSON() (*__premarshalInnerQueryFragmentOtherLeafVideo, error) {
var retval __premarshalInnerQueryFragmentOtherLeafVideo
retval.Typename = v.Typename
retval.Id = v.MoreVideoFields.Id
retval.Parent = v.MoreVideoFields.Parent
retval.Name = v.ContentFieldsVideo.Name
retval.Url = v.ContentFieldsVideo.Url
return &retval, nil
}
// InnerQueryFragmentRandomItemArticle includes the requested fields of the GraphQL type Article.
type InnerQueryFragmentRandomItemArticle struct {
Typename string `json:"__typename"`
// ID is the identifier of the content.
Id testutil.ID `json:"id"`
Name string `json:"name"`
ContentFieldsArticle `json:"-"`
}
// GetTypename returns InnerQueryFragmentRandomItemArticle.Typename, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomItemArticle) GetTypename() string { return v.Typename }
// GetId returns InnerQueryFragmentRandomItemArticle.Id, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomItemArticle) GetId() testutil.ID { return v.Id }
// GetName returns InnerQueryFragmentRandomItemArticle.Name, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomItemArticle) GetName() string { return v.Name }
// GetUrl returns InnerQueryFragmentRandomItemArticle.Url, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomItemArticle) GetUrl() string { return v.ContentFieldsArticle.Url }
func (v *InnerQueryFragmentRandomItemArticle) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*InnerQueryFragmentRandomItemArticle
graphql.NoUnmarshalJSON
}
firstPass.InnerQueryFragmentRandomItemArticle = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.ContentFieldsArticle)
if err != nil {
return err
}
return nil
}
type __premarshalInnerQueryFragmentRandomItemArticle struct {
Typename string `json:"__typename"`
Id testutil.ID `json:"id"`
Name string `json:"name"`
Url string `json:"url"`
}
func (v *InnerQueryFragmentRandomItemArticle) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *InnerQueryFragmentRandomItemArticle) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomItemArticle, error) {
var retval __premarshalInnerQueryFragmentRandomItemArticle
retval.Typename = v.Typename
retval.Id = v.Id
retval.Name = v.Name
retval.Url = v.ContentFieldsArticle.Url
return &retval, nil
}
// InnerQueryFragmentRandomItemContent includes the requested fields of the GraphQL interface Content.
//
// InnerQueryFragmentRandomItemContent is implemented by the following types:
// InnerQueryFragmentRandomItemArticle
// InnerQueryFragmentRandomItemTopic
// InnerQueryFragmentRandomItemVideo
// The GraphQL type's documentation follows.
//
// Content is implemented by various types like Article, Video, and Topic.
type InnerQueryFragmentRandomItemContent interface {
implementsGraphQLInterfaceInnerQueryFragmentRandomItemContent()
// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
GetTypename() string
// GetId returns the interface-field "id" from its implementation.
// The GraphQL interface field's documentation follows.
//
// ID is the identifier of the content.
GetId() testutil.ID
// GetName returns the interface-field "name" from its implementation.
GetName() string
ContentFields
}
func (v *InnerQueryFragmentRandomItemArticle) implementsGraphQLInterfaceInnerQueryFragmentRandomItemContent() {
}
func (v *InnerQueryFragmentRandomItemTopic) implementsGraphQLInterfaceInnerQueryFragmentRandomItemContent() {
}
func (v *InnerQueryFragmentRandomItemVideo) implementsGraphQLInterfaceInnerQueryFragmentRandomItemContent() {
}
func __unmarshalInnerQueryFragmentRandomItemContent(b []byte, v *InnerQueryFragmentRandomItemContent) error {
if string(b) == "null" {
return nil
}
var tn struct {
TypeName string `json:"__typename"`
}
err := json.Unmarshal(b, &tn)
if err != nil {
return err
}
switch tn.TypeName {
case "Article":
*v = new(InnerQueryFragmentRandomItemArticle)
return json.Unmarshal(b, *v)
case "Topic":
*v = new(InnerQueryFragmentRandomItemTopic)
return json.Unmarshal(b, *v)
case "Video":
*v = new(InnerQueryFragmentRandomItemVideo)
return json.Unmarshal(b, *v)
case "":
return fmt.Errorf(
"response was missing Content.__typename")
default:
return fmt.Errorf(
`unexpected concrete type for InnerQueryFragmentRandomItemContent: "%v"`, tn.TypeName)
}
}
func __marshalInnerQueryFragmentRandomItemContent(v *InnerQueryFragmentRandomItemContent) ([]byte, error) {
var typename string
switch v := (*v).(type) {
case *InnerQueryFragmentRandomItemArticle:
typename = "Article"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalInnerQueryFragmentRandomItemArticle
}{typename, premarshaled}
return json.Marshal(result)
case *InnerQueryFragmentRandomItemTopic:
typename = "Topic"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalInnerQueryFragmentRandomItemTopic
}{typename, premarshaled}
return json.Marshal(result)
case *InnerQueryFragmentRandomItemVideo:
typename = "Video"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalInnerQueryFragmentRandomItemVideo
}{typename, premarshaled}
return json.Marshal(result)
case nil:
return []byte("null"), nil
default:
return nil, fmt.Errorf(
`unexpected concrete type for InnerQueryFragmentRandomItemContent: "%T"`, v)
}
}
// InnerQueryFragmentRandomItemTopic includes the requested fields of the GraphQL type Topic.
type InnerQueryFragmentRandomItemTopic struct {
Typename string `json:"__typename"`
// ID is the identifier of the content.
Id testutil.ID `json:"id"`
Name string `json:"name"`
ContentFieldsTopic `json:"-"`
}
// GetTypename returns InnerQueryFragmentRandomItemTopic.Typename, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomItemTopic) GetTypename() string { return v.Typename }
// GetId returns InnerQueryFragmentRandomItemTopic.Id, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomItemTopic) GetId() testutil.ID { return v.Id }
// GetName returns InnerQueryFragmentRandomItemTopic.Name, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomItemTopic) GetName() string { return v.Name }
// GetUrl returns InnerQueryFragmentRandomItemTopic.Url, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomItemTopic) GetUrl() string { return v.ContentFieldsTopic.Url }
func (v *InnerQueryFragmentRandomItemTopic) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*InnerQueryFragmentRandomItemTopic
graphql.NoUnmarshalJSON
}
firstPass.InnerQueryFragmentRandomItemTopic = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.ContentFieldsTopic)
if err != nil {
return err
}
return nil
}
type __premarshalInnerQueryFragmentRandomItemTopic struct {
Typename string `json:"__typename"`
Id testutil.ID `json:"id"`
Name string `json:"name"`
Url string `json:"url"`
}
func (v *InnerQueryFragmentRandomItemTopic) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *InnerQueryFragmentRandomItemTopic) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomItemTopic, error) {
var retval __premarshalInnerQueryFragmentRandomItemTopic
retval.Typename = v.Typename
retval.Id = v.Id
retval.Name = v.Name
retval.Url = v.ContentFieldsTopic.Url
return &retval, nil
}
// InnerQueryFragmentRandomItemVideo includes the requested fields of the GraphQL type Video.
type InnerQueryFragmentRandomItemVideo struct {
Typename string `json:"__typename"`
// ID is the identifier of the content.
Id testutil.ID `json:"id"`
Name string `json:"name"`
VideoFields `json:"-"`
ContentFieldsVideo `json:"-"`
}
// GetTypename returns InnerQueryFragmentRandomItemVideo.Typename, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomItemVideo) GetTypename() string { return v.Typename }
// GetId returns InnerQueryFragmentRandomItemVideo.Id, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomItemVideo) GetId() testutil.ID { return v.Id }
// GetName returns InnerQueryFragmentRandomItemVideo.Name, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomItemVideo) GetName() string { return v.Name }
// GetUrl returns InnerQueryFragmentRandomItemVideo.Url, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomItemVideo) GetUrl() string { return v.VideoFields.Url }
// GetDuration returns InnerQueryFragmentRandomItemVideo.Duration, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomItemVideo) GetDuration() int { return v.VideoFields.Duration }
// GetThumbnail returns InnerQueryFragmentRandomItemVideo.Thumbnail, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomItemVideo) GetThumbnail() VideoFieldsThumbnail {
return v.VideoFields.Thumbnail
}
func (v *InnerQueryFragmentRandomItemVideo) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*InnerQueryFragmentRandomItemVideo
graphql.NoUnmarshalJSON
}
firstPass.InnerQueryFragmentRandomItemVideo = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.VideoFields)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.ContentFieldsVideo)
if err != nil {
return err
}
return nil
}
type __premarshalInnerQueryFragmentRandomItemVideo struct {
Typename string `json:"__typename"`
Id testutil.ID `json:"id"`
Name string `json:"name"`
Url string `json:"url"`
Duration int `json:"duration"`
Thumbnail VideoFieldsThumbnail `json:"thumbnail"`
}
func (v *InnerQueryFragmentRandomItemVideo) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *InnerQueryFragmentRandomItemVideo) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomItemVideo, error) {
var retval __premarshalInnerQueryFragmentRandomItemVideo
retval.Typename = v.Typename
retval.Id = v.Id
retval.Name = v.Name
retval.Url = v.VideoFields.Url
retval.Duration = v.VideoFields.Duration
retval.Thumbnail = v.VideoFields.Thumbnail
return &retval, nil
}
// InnerQueryFragmentRandomLeafArticle includes the requested fields of the GraphQL type Article.
type InnerQueryFragmentRandomLeafArticle struct {
Typename string `json:"__typename"`
ContentFieldsArticle `json:"-"`
}
// GetTypename returns InnerQueryFragmentRandomLeafArticle.Typename, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomLeafArticle) GetTypename() string { return v.Typename }
// GetName returns InnerQueryFragmentRandomLeafArticle.Name, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomLeafArticle) GetName() string { return v.ContentFieldsArticle.Name }
// GetUrl returns InnerQueryFragmentRandomLeafArticle.Url, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomLeafArticle) GetUrl() string { return v.ContentFieldsArticle.Url }
func (v *InnerQueryFragmentRandomLeafArticle) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*InnerQueryFragmentRandomLeafArticle
graphql.NoUnmarshalJSON
}
firstPass.InnerQueryFragmentRandomLeafArticle = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.ContentFieldsArticle)
if err != nil {
return err
}
return nil
}
type __premarshalInnerQueryFragmentRandomLeafArticle struct {
Typename string `json:"__typename"`
Name string `json:"name"`
Url string `json:"url"`
}
func (v *InnerQueryFragmentRandomLeafArticle) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *InnerQueryFragmentRandomLeafArticle) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomLeafArticle, error) {
var retval __premarshalInnerQueryFragmentRandomLeafArticle
retval.Typename = v.Typename
retval.Name = v.ContentFieldsArticle.Name
retval.Url = v.ContentFieldsArticle.Url
return &retval, nil
}
// InnerQueryFragmentRandomLeafLeafContent includes the requested fields of the GraphQL interface LeafContent.
//
// InnerQueryFragmentRandomLeafLeafContent is implemented by the following types:
// InnerQueryFragmentRandomLeafArticle
// InnerQueryFragmentRandomLeafVideo
// The GraphQL type's documentation follows.
//
// LeafContent represents content items that can't have child-nodes.
type InnerQueryFragmentRandomLeafLeafContent interface {
implementsGraphQLInterfaceInnerQueryFragmentRandomLeafLeafContent()
// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
GetTypename() string
}
func (v *InnerQueryFragmentRandomLeafArticle) implementsGraphQLInterfaceInnerQueryFragmentRandomLeafLeafContent() {
}
func (v *InnerQueryFragmentRandomLeafVideo) implementsGraphQLInterfaceInnerQueryFragmentRandomLeafLeafContent() {
}
func __unmarshalInnerQueryFragmentRandomLeafLeafContent(b []byte, v *InnerQueryFragmentRandomLeafLeafContent) error {
if string(b) == "null" {
return nil
}
var tn struct {
TypeName string `json:"__typename"`
}
err := json.Unmarshal(b, &tn)
if err != nil {
return err
}
switch tn.TypeName {
case "Article":
*v = new(InnerQueryFragmentRandomLeafArticle)
return json.Unmarshal(b, *v)
case "Video":
*v = new(InnerQueryFragmentRandomLeafVideo)
return json.Unmarshal(b, *v)
case "":
return fmt.Errorf(
"response was missing LeafContent.__typename")
default:
return fmt.Errorf(
`unexpected concrete type for InnerQueryFragmentRandomLeafLeafContent: "%v"`, tn.TypeName)
}
}
func __marshalInnerQueryFragmentRandomLeafLeafContent(v *InnerQueryFragmentRandomLeafLeafContent) ([]byte, error) {
var typename string
switch v := (*v).(type) {
case *InnerQueryFragmentRandomLeafArticle:
typename = "Article"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalInnerQueryFragmentRandomLeafArticle
}{typename, premarshaled}
return json.Marshal(result)
case *InnerQueryFragmentRandomLeafVideo:
typename = "Video"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalInnerQueryFragmentRandomLeafVideo
}{typename, premarshaled}
return json.Marshal(result)
case nil:
return []byte("null"), nil
default:
return nil, fmt.Errorf(
`unexpected concrete type for InnerQueryFragmentRandomLeafLeafContent: "%T"`, v)
}
}
// InnerQueryFragmentRandomLeafVideo includes the requested fields of the GraphQL type Video.
type InnerQueryFragmentRandomLeafVideo struct {
Typename string `json:"__typename"`
VideoFields `json:"-"`
MoreVideoFields `json:"-"`
ContentFieldsVideo `json:"-"`
}
// GetTypename returns InnerQueryFragmentRandomLeafVideo.Typename, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomLeafVideo) GetTypename() string { return v.Typename }
// GetId returns InnerQueryFragmentRandomLeafVideo.Id, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomLeafVideo) GetId() testutil.ID { return v.VideoFields.Id }
// GetName returns InnerQueryFragmentRandomLeafVideo.Name, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomLeafVideo) GetName() string { return v.VideoFields.Name }
// GetUrl returns InnerQueryFragmentRandomLeafVideo.Url, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomLeafVideo) GetUrl() string { return v.VideoFields.Url }
// GetDuration returns InnerQueryFragmentRandomLeafVideo.Duration, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomLeafVideo) GetDuration() int { return v.VideoFields.Duration }
// GetThumbnail returns InnerQueryFragmentRandomLeafVideo.Thumbnail, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomLeafVideo) GetThumbnail() VideoFieldsThumbnail {
return v.VideoFields.Thumbnail
}
// GetParent returns InnerQueryFragmentRandomLeafVideo.Parent, and is useful for accessing the field via an interface.
func (v *InnerQueryFragmentRandomLeafVideo) GetParent() *MoreVideoFieldsParentTopic {
return v.MoreVideoFields.Parent
}
func (v *InnerQueryFragmentRandomLeafVideo) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*InnerQueryFragmentRandomLeafVideo
graphql.NoUnmarshalJSON
}
firstPass.InnerQueryFragmentRandomLeafVideo = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.VideoFields)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.MoreVideoFields)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.ContentFieldsVideo)
if err != nil {
return err
}
return nil
}
type __premarshalInnerQueryFragmentRandomLeafVideo struct {
Typename string `json:"__typename"`
Id testutil.ID `json:"id"`
Name string `json:"name"`
Url string `json:"url"`
Duration int `json:"duration"`
Thumbnail VideoFieldsThumbnail `json:"thumbnail"`
Parent *MoreVideoFieldsParentTopic `json:"parent"`
}
func (v *InnerQueryFragmentRandomLeafVideo) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *InnerQueryFragmentRandomLeafVideo) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomLeafVideo, error) {
var retval __premarshalInnerQueryFragmentRandomLeafVideo
retval.Typename = v.Typename
retval.Id = v.VideoFields.Id
retval.Name = v.VideoFields.Name
retval.Url = v.VideoFields.Url
retval.Duration = v.VideoFields.Duration
retval.Thumbnail = v.VideoFields.Thumbnail
retval.Parent = v.MoreVideoFields.Parent
return &retval, nil
}
// MoreVideoFields includes the GraphQL fields of Video requested by the fragment MoreVideoFields.
type MoreVideoFields struct {
// ID is documented in the Content interface.
Id *testutil.ID `json:"id"`
Parent *MoreVideoFieldsParentTopic `json:"parent"`
}
// GetId returns MoreVideoFields.Id, and is useful for accessing the field via an interface.
func (v *MoreVideoFields) GetId() *testutil.ID { return v.Id }
// GetParent returns MoreVideoFields.Parent, and is useful for accessing the field via an interface.
func (v *MoreVideoFields) GetParent() *MoreVideoFieldsParentTopic { return v.Parent }
// MoreVideoFieldsParentTopic includes the requested fields of the GraphQL type Topic.
type MoreVideoFieldsParentTopic struct {
Name *string `json:"name"`
Url *string `json:"url"`
ContentFieldsTopic `json:"-"`
Children []MoreVideoFieldsParentTopicChildrenContent `json:"-"`
}
// GetName returns MoreVideoFieldsParentTopic.Name, and is useful for accessing the field via an interface.
func (v *MoreVideoFieldsParentTopic) GetName() *string { return v.Name }
// GetUrl returns MoreVideoFieldsParentTopic.Url, and is useful for accessing the field via an interface.
func (v *MoreVideoFieldsParentTopic) GetUrl() *string { return v.Url }
// GetChildren returns MoreVideoFieldsParentTopic.Children, and is useful for accessing the field via an interface.
func (v *MoreVideoFieldsParentTopic) GetChildren() []MoreVideoFieldsParentTopicChildrenContent {
return v.Children
}
func (v *MoreVideoFieldsParentTopic) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*MoreVideoFieldsParentTopic
Children []json.RawMessage `json:"children"`
graphql.NoUnmarshalJSON
}
firstPass.MoreVideoFieldsParentTopic = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.ContentFieldsTopic)
if err != nil {
return err
}
{
dst := &v.Children
src := firstPass.Children
*dst = make(
[]MoreVideoFieldsParentTopicChildrenContent,
len(src))
for i, src := range src {
dst := &(*dst)[i]
if len(src) != 0 && string(src) != "null" {
err = __unmarshalMoreVideoFieldsParentTopicChildrenContent(
src, dst)
if err != nil {
return fmt.Errorf(
"unable to unmarshal MoreVideoFieldsParentTopic.Children: %w", err)
}
}
}
}
return nil
}
type __premarshalMoreVideoFieldsParentTopic struct {
Name *string `json:"name"`
Url *string `json:"url"`
Children []json.RawMessage `json:"children"`
}
func (v *MoreVideoFieldsParentTopic) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *MoreVideoFieldsParentTopic) __premarshalJSON() (*__premarshalMoreVideoFieldsParentTopic, error) {
var retval __premarshalMoreVideoFieldsParentTopic
retval.Name = v.Name
retval.Url = v.Url
{
dst := &retval.Children
src := v.Children
*dst = make(
[]json.RawMessage,
len(src))
for i, src := range src {
dst := &(*dst)[i]
var err error
*dst, err = __marshalMoreVideoFieldsParentTopicChildrenContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal MoreVideoFieldsParentTopic.Children: %w", err)
}
}
}
return &retval, nil
}
// MoreVideoFieldsParentTopicChildrenArticle includes the requested fields of the GraphQL type Article.
type MoreVideoFieldsParentTopicChildrenArticle struct {
Typename *string `json:"__typename"`
}
// GetTypename returns MoreVideoFieldsParentTopicChildrenArticle.Typename, and is useful for accessing the field via an interface.
func (v *MoreVideoFieldsParentTopicChildrenArticle) GetTypename() *string { return v.Typename }
// MoreVideoFieldsParentTopicChildrenContent includes the requested fields of the GraphQL interface Content.
//
// MoreVideoFieldsParentTopicChildrenContent is implemented by the following types:
// MoreVideoFieldsParentTopicChildrenArticle
// MoreVideoFieldsParentTopicChildrenTopic
// MoreVideoFieldsParentTopicChildrenVideo
// The GraphQL type's documentation follows.
//
// Content is implemented by various types like Article, Video, and Topic.
type MoreVideoFieldsParentTopicChildrenContent interface {
implementsGraphQLInterfaceMoreVideoFieldsParentTopicChildrenContent()
// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
GetTypename() *string
}
func (v *MoreVideoFieldsParentTopicChildrenArticle) implementsGraphQLInterfaceMoreVideoFieldsParentTopicChildrenContent() {
}
func (v *MoreVideoFieldsParentTopicChildrenTopic) implementsGraphQLInterfaceMoreVideoFieldsParentTopicChildrenContent() {
}
func (v *MoreVideoFieldsParentTopicChildrenVideo) implementsGraphQLInterfaceMoreVideoFieldsParentTopicChildrenContent() {
}
func __unmarshalMoreVideoFieldsParentTopicChildrenContent(b []byte, v *MoreVideoFieldsParentTopicChildrenContent) error {
if string(b) == "null" {
return nil
}
var tn struct {
TypeName string `json:"__typename"`
}
err := json.Unmarshal(b, &tn)
if err != nil {
return err
}
switch tn.TypeName {
case "Article":
*v = new(MoreVideoFieldsParentTopicChildrenArticle)
return json.Unmarshal(b, *v)
case "Topic":
*v = new(MoreVideoFieldsParentTopicChildrenTopic)
return json.Unmarshal(b, *v)
case "Video":
*v = new(MoreVideoFieldsParentTopicChildrenVideo)
return json.Unmarshal(b, *v)
case "":
return fmt.Errorf(
"response was missing Content.__typename")
default:
return fmt.Errorf(
`unexpected concrete type for MoreVideoFieldsParentTopicChildrenContent: "%v"`, tn.TypeName)
}
}
func __marshalMoreVideoFieldsParentTopicChildrenContent(v *MoreVideoFieldsParentTopicChildrenContent) ([]byte, error) {
var typename string
switch v := (*v).(type) {
case *MoreVideoFieldsParentTopicChildrenArticle:
typename = "Article"
result := struct {
TypeName string `json:"__typename"`
*MoreVideoFieldsParentTopicChildrenArticle
}{typename, v}
return json.Marshal(result)
case *MoreVideoFieldsParentTopicChildrenTopic:
typename = "Topic"
result := struct {
TypeName string `json:"__typename"`
*MoreVideoFieldsParentTopicChildrenTopic
}{typename, v}
return json.Marshal(result)
case *MoreVideoFieldsParentTopicChildrenVideo:
typename = "Video"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalMoreVideoFieldsParentTopicChildrenVideo
}{typename, premarshaled}
return json.Marshal(result)
case nil:
return []byte("null"), nil
default:
return nil, fmt.Errorf(
`unexpected concrete type for MoreVideoFieldsParentTopicChildrenContent: "%T"`, v)
}
}
// MoreVideoFieldsParentTopicChildrenTopic includes the requested fields of the GraphQL type Topic.
type MoreVideoFieldsParentTopicChildrenTopic struct {
Typename *string `json:"__typename"`
}
// GetTypename returns MoreVideoFieldsParentTopicChildrenTopic.Typename, and is useful for accessing the field via an interface.
func (v *MoreVideoFieldsParentTopicChildrenTopic) GetTypename() *string { return v.Typename }
// MoreVideoFieldsParentTopicChildrenVideo includes the requested fields of the GraphQL type Video.
type MoreVideoFieldsParentTopicChildrenVideo struct {
Typename *string `json:"__typename"`
VideoFields `json:"-"`
}
// GetTypename returns MoreVideoFieldsParentTopicChildrenVideo.Typename, and is useful for accessing the field via an interface.
func (v *MoreVideoFieldsParentTopicChildrenVideo) GetTypename() *string { return v.Typename }
// GetId returns MoreVideoFieldsParentTopicChildrenVideo.Id, and is useful for accessing the field via an interface.
func (v *MoreVideoFieldsParentTopicChildrenVideo) GetId() testutil.ID { return v.VideoFields.Id }
// GetName returns MoreVideoFieldsParentTopicChildrenVideo.Name, and is useful for accessing the field via an interface.
func (v *MoreVideoFieldsParentTopicChildrenVideo) GetName() string { return v.VideoFields.Name }
// GetUrl returns MoreVideoFieldsParentTopicChildrenVideo.Url, and is useful for accessing the field via an interface.
func (v *MoreVideoFieldsParentTopicChildrenVideo) GetUrl() string { return v.VideoFields.Url }
// GetDuration returns MoreVideoFieldsParentTopicChildrenVideo.Duration, and is useful for accessing the field via an interface.
func (v *MoreVideoFieldsParentTopicChildrenVideo) GetDuration() int { return v.VideoFields.Duration }
// GetThumbnail returns MoreVideoFieldsParentTopicChildrenVideo.Thumbnail, and is useful for accessing the field via an interface.
func (v *MoreVideoFieldsParentTopicChildrenVideo) GetThumbnail() VideoFieldsThumbnail {
return v.VideoFields.Thumbnail
}
func (v *MoreVideoFieldsParentTopicChildrenVideo) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*MoreVideoFieldsParentTopicChildrenVideo
graphql.NoUnmarshalJSON
}
firstPass.MoreVideoFieldsParentTopicChildrenVideo = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.VideoFields)
if err != nil {
return err
}
return nil
}
type __premarshalMoreVideoFieldsParentTopicChildrenVideo struct {
Typename *string `json:"__typename"`
Id testutil.ID `json:"id"`
Name string `json:"name"`
Url string `json:"url"`
Duration int `json:"duration"`
Thumbnail VideoFieldsThumbnail `json:"thumbnail"`
}
func (v *MoreVideoFieldsParentTopicChildrenVideo) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *MoreVideoFieldsParentTopicChildrenVideo) __premarshalJSON() (*__premarshalMoreVideoFieldsParentTopicChildrenVideo, error) {
var retval __premarshalMoreVideoFieldsParentTopicChildrenVideo
retval.Typename = v.Typename
retval.Id = v.VideoFields.Id
retval.Name = v.VideoFields.Name
retval.Url = v.VideoFields.Url
retval.Duration = v.VideoFields.Duration
retval.Thumbnail = v.VideoFields.Thumbnail
return &retval, nil
}
// QueryFragment includes the GraphQL fields of Query requested by the fragment QueryFragment.
// The GraphQL type's documentation follows.
//
// Query's description is probably ignored by almost all callers.
type QueryFragment struct {
InnerQueryFragment `json:"-"`
}
// GetRandomItem returns QueryFragment.RandomItem, and is useful for accessing the field via an interface.
func (v *QueryFragment) GetRandomItem() InnerQueryFragmentRandomItemContent {
return v.InnerQueryFragment.RandomItem
}
// GetRandomLeaf returns QueryFragment.RandomLeaf, and is useful for accessing the field via an interface.
func (v *QueryFragment) GetRandomLeaf() InnerQueryFragmentRandomLeafLeafContent {
return v.InnerQueryFragment.RandomLeaf
}
// GetOtherLeaf returns QueryFragment.OtherLeaf, and is useful for accessing the field via an interface.
func (v *QueryFragment) GetOtherLeaf() InnerQueryFragmentOtherLeafLeafContent {
return v.InnerQueryFragment.OtherLeaf
}
func (v *QueryFragment) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*QueryFragment
graphql.NoUnmarshalJSON
}
firstPass.QueryFragment = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.InnerQueryFragment)
if err != nil {
return err
}
return nil
}
type __premarshalQueryFragment struct {
RandomItem json.RawMessage `json:"randomItem"`
RandomLeaf json.RawMessage `json:"randomLeaf"`
OtherLeaf json.RawMessage `json:"otherLeaf"`
}
func (v *QueryFragment) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *QueryFragment) __premarshalJSON() (*__premarshalQueryFragment, error) {
var retval __premarshalQueryFragment
{
dst := &retval.RandomItem
src := v.InnerQueryFragment.RandomItem
var err error
*dst, err = __marshalInnerQueryFragmentRandomItemContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal QueryFragment.InnerQueryFragment.RandomItem: %w", err)
}
}
{
dst := &retval.RandomLeaf
src := v.InnerQueryFragment.RandomLeaf
var err error
*dst, err = __marshalInnerQueryFragmentRandomLeafLeafContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal QueryFragment.InnerQueryFragment.RandomLeaf: %w", err)
}
}
{
dst := &retval.OtherLeaf
src := v.InnerQueryFragment.OtherLeaf
var err error
*dst, err = __marshalInnerQueryFragmentOtherLeafLeafContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal QueryFragment.InnerQueryFragment.OtherLeaf: %w", err)
}
}
return &retval, nil
}
// VideoFields includes the GraphQL fields of Video requested by the fragment VideoFields.
type VideoFields struct {
// ID is documented in the Content interface.
Id testutil.ID `json:"id"`
Name string `json:"name"`
Url string `json:"url"`
Duration int `json:"duration"`
Thumbnail VideoFieldsThumbnail `json:"thumbnail"`
ContentFieldsVideo `json:"-"`
}
// GetId returns VideoFields.Id, and is useful for accessing the field via an interface.
func (v *VideoFields) GetId() testutil.ID { return v.Id }
// GetName returns VideoFields.Name, and is useful for accessing the field via an interface.
func (v *VideoFields) GetName() string { return v.Name }
// GetUrl returns VideoFields.Url, and is useful for accessing the field via an interface.
func (v *VideoFields) GetUrl() string { return v.Url }
// GetDuration returns VideoFields.Duration, and is useful for accessing the field via an interface.
func (v *VideoFields) GetDuration() int { return v.Duration }
// GetThumbnail returns VideoFields.Thumbnail, and is useful for accessing the field via an interface.
func (v *VideoFields) GetThumbnail() VideoFieldsThumbnail { return v.Thumbnail }
func (v *VideoFields) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*VideoFields
graphql.NoUnmarshalJSON
}
firstPass.VideoFields = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.ContentFieldsVideo)
if err != nil {
return err
}
return nil
}
type __premarshalVideoFields struct {
Id testutil.ID `json:"id"`
Name string `json:"name"`
Url string `json:"url"`
Duration int `json:"duration"`
Thumbnail VideoFieldsThumbnail `json:"thumbnail"`
}
func (v *VideoFields) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *VideoFields) __premarshalJSON() (*__premarshalVideoFields, error) {
var retval __premarshalVideoFields
retval.Id = v.Id
retval.Name = v.Name
retval.Url = v.Url
retval.Duration = v.Duration
retval.Thumbnail = v.Thumbnail
return &retval, nil
}
// VideoFieldsThumbnail includes the requested fields of the GraphQL type Thumbnail.
type VideoFieldsThumbnail struct {
Id testutil.ID `json:"id"`
}
// GetId returns VideoFieldsThumbnail.Id, and is useful for accessing the field via an interface.
func (v *VideoFieldsThumbnail) GetId() testutil.ID { return v.Id }
// The query or mutation executed by ComplexNamedFragments.
const ComplexNamedFragments_Operation = `
query ComplexNamedFragments {
... on Query {
... QueryFragment
}
}
fragment QueryFragment on Query {
... InnerQueryFragment
}
fragment InnerQueryFragment on Query {
randomItem {
__typename
id
name
... VideoFields
... ContentFields
}
randomLeaf {
__typename
... VideoFields
... MoreVideoFields
... ContentFields
}
otherLeaf: randomLeaf {
__typename
... on Video {
... MoreVideoFields
... ContentFields
}
... ContentFields
}
}
fragment VideoFields on Video {
id
name
url
duration
thumbnail {
id
}
... ContentFields
}
fragment ContentFields on Content {
name
url
}
fragment MoreVideoFields on Video {
id
parent {
name
url
... ContentFields
children {
__typename
... VideoFields
}
}
}
`
func ComplexNamedFragments(
client graphql.Client,
) (*ComplexNamedFragmentsResponse, error) {
req := &graphql.Request{
OpName: "ComplexNamedFragments",
Query: ComplexNamedFragments_Operation,
}
var err error
var data ComplexNamedFragmentsResponse
resp := &graphql.Response{Data: &data}
err = client.MakeRequest(
nil,
req,
resp,
)
return &data, err
}