// 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" ) // ComplexInlineFragmentsConflictingStuffArticle includes the requested fields of the GraphQL type Article. type ComplexInlineFragmentsConflictingStuffArticle struct { Typename string `json:"__typename"` Thumbnail ComplexInlineFragmentsConflictingStuffArticleThumbnailStuffThumbnail `json:"thumbnail"` } // GetTypename returns ComplexInlineFragmentsConflictingStuffArticle.Typename, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsConflictingStuffArticle) GetTypename() string { return v.Typename } // GetThumbnail returns ComplexInlineFragmentsConflictingStuffArticle.Thumbnail, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsConflictingStuffArticle) GetThumbnail() ComplexInlineFragmentsConflictingStuffArticleThumbnailStuffThumbnail { return v.Thumbnail } // ComplexInlineFragmentsConflictingStuffArticleThumbnailStuffThumbnail includes the requested fields of the GraphQL type StuffThumbnail. type ComplexInlineFragmentsConflictingStuffArticleThumbnailStuffThumbnail struct { Id testutil.ID `json:"id"` ThumbnailUrl string `json:"thumbnailUrl"` } // GetId returns ComplexInlineFragmentsConflictingStuffArticleThumbnailStuffThumbnail.Id, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsConflictingStuffArticleThumbnailStuffThumbnail) GetId() testutil.ID { return v.Id } // GetThumbnailUrl returns ComplexInlineFragmentsConflictingStuffArticleThumbnailStuffThumbnail.ThumbnailUrl, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsConflictingStuffArticleThumbnailStuffThumbnail) GetThumbnailUrl() string { return v.ThumbnailUrl } // ComplexInlineFragmentsConflictingStuffContent includes the requested fields of the GraphQL interface Content. // // ComplexInlineFragmentsConflictingStuffContent is implemented by the following types: // ComplexInlineFragmentsConflictingStuffArticle // ComplexInlineFragmentsConflictingStuffTopic // ComplexInlineFragmentsConflictingStuffVideo // The GraphQL type's documentation follows. // // Content is implemented by various types like Article, Video, and Topic. type ComplexInlineFragmentsConflictingStuffContent interface { implementsGraphQLInterfaceComplexInlineFragmentsConflictingStuffContent() // GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values). GetTypename() string } func (v *ComplexInlineFragmentsConflictingStuffArticle) implementsGraphQLInterfaceComplexInlineFragmentsConflictingStuffContent() { } func (v *ComplexInlineFragmentsConflictingStuffTopic) implementsGraphQLInterfaceComplexInlineFragmentsConflictingStuffContent() { } func (v *ComplexInlineFragmentsConflictingStuffVideo) implementsGraphQLInterfaceComplexInlineFragmentsConflictingStuffContent() { } func __unmarshalComplexInlineFragmentsConflictingStuffContent(b []byte, v *ComplexInlineFragmentsConflictingStuffContent) 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(ComplexInlineFragmentsConflictingStuffArticle) return json.Unmarshal(b, *v) case "Topic": *v = new(ComplexInlineFragmentsConflictingStuffTopic) return json.Unmarshal(b, *v) case "Video": *v = new(ComplexInlineFragmentsConflictingStuffVideo) return json.Unmarshal(b, *v) case "": return fmt.Errorf( "response was missing Content.__typename") default: return fmt.Errorf( `unexpected concrete type for ComplexInlineFragmentsConflictingStuffContent: "%v"`, tn.TypeName) } } func __marshalComplexInlineFragmentsConflictingStuffContent(v *ComplexInlineFragmentsConflictingStuffContent) ([]byte, error) { var typename string switch v := (*v).(type) { case *ComplexInlineFragmentsConflictingStuffArticle: typename = "Article" result := struct { TypeName string `json:"__typename"` *ComplexInlineFragmentsConflictingStuffArticle }{typename, v} return json.Marshal(result) case *ComplexInlineFragmentsConflictingStuffTopic: typename = "Topic" result := struct { TypeName string `json:"__typename"` *ComplexInlineFragmentsConflictingStuffTopic }{typename, v} return json.Marshal(result) case *ComplexInlineFragmentsConflictingStuffVideo: typename = "Video" result := struct { TypeName string `json:"__typename"` *ComplexInlineFragmentsConflictingStuffVideo }{typename, v} return json.Marshal(result) case nil: return []byte("null"), nil default: return nil, fmt.Errorf( `unexpected concrete type for ComplexInlineFragmentsConflictingStuffContent: "%T"`, v) } } // ComplexInlineFragmentsConflictingStuffTopic includes the requested fields of the GraphQL type Topic. type ComplexInlineFragmentsConflictingStuffTopic struct { Typename string `json:"__typename"` } // GetTypename returns ComplexInlineFragmentsConflictingStuffTopic.Typename, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsConflictingStuffTopic) GetTypename() string { return v.Typename } // ComplexInlineFragmentsConflictingStuffVideo includes the requested fields of the GraphQL type Video. type ComplexInlineFragmentsConflictingStuffVideo struct { Typename string `json:"__typename"` Thumbnail ComplexInlineFragmentsConflictingStuffVideoThumbnail `json:"thumbnail"` } // GetTypename returns ComplexInlineFragmentsConflictingStuffVideo.Typename, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsConflictingStuffVideo) GetTypename() string { return v.Typename } // GetThumbnail returns ComplexInlineFragmentsConflictingStuffVideo.Thumbnail, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsConflictingStuffVideo) GetThumbnail() ComplexInlineFragmentsConflictingStuffVideoThumbnail { return v.Thumbnail } // ComplexInlineFragmentsConflictingStuffVideoThumbnail includes the requested fields of the GraphQL type Thumbnail. type ComplexInlineFragmentsConflictingStuffVideoThumbnail struct { Id testutil.ID `json:"id"` TimestampSec int `json:"timestampSec"` } // GetId returns ComplexInlineFragmentsConflictingStuffVideoThumbnail.Id, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsConflictingStuffVideoThumbnail) GetId() testutil.ID { return v.Id } // GetTimestampSec returns ComplexInlineFragmentsConflictingStuffVideoThumbnail.TimestampSec, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsConflictingStuffVideoThumbnail) GetTimestampSec() int { return v.TimestampSec } // ComplexInlineFragmentsNestedStuffArticle includes the requested fields of the GraphQL type Article. type ComplexInlineFragmentsNestedStuffArticle struct { Typename string `json:"__typename"` } // GetTypename returns ComplexInlineFragmentsNestedStuffArticle.Typename, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffArticle) GetTypename() string { return v.Typename } // ComplexInlineFragmentsNestedStuffContent includes the requested fields of the GraphQL interface Content. // // ComplexInlineFragmentsNestedStuffContent is implemented by the following types: // ComplexInlineFragmentsNestedStuffArticle // ComplexInlineFragmentsNestedStuffTopic // ComplexInlineFragmentsNestedStuffVideo // The GraphQL type's documentation follows. // // Content is implemented by various types like Article, Video, and Topic. type ComplexInlineFragmentsNestedStuffContent interface { implementsGraphQLInterfaceComplexInlineFragmentsNestedStuffContent() // GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values). GetTypename() string } func (v *ComplexInlineFragmentsNestedStuffArticle) implementsGraphQLInterfaceComplexInlineFragmentsNestedStuffContent() { } func (v *ComplexInlineFragmentsNestedStuffTopic) implementsGraphQLInterfaceComplexInlineFragmentsNestedStuffContent() { } func (v *ComplexInlineFragmentsNestedStuffVideo) implementsGraphQLInterfaceComplexInlineFragmentsNestedStuffContent() { } func __unmarshalComplexInlineFragmentsNestedStuffContent(b []byte, v *ComplexInlineFragmentsNestedStuffContent) 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(ComplexInlineFragmentsNestedStuffArticle) return json.Unmarshal(b, *v) case "Topic": *v = new(ComplexInlineFragmentsNestedStuffTopic) return json.Unmarshal(b, *v) case "Video": *v = new(ComplexInlineFragmentsNestedStuffVideo) return json.Unmarshal(b, *v) case "": return fmt.Errorf( "response was missing Content.__typename") default: return fmt.Errorf( `unexpected concrete type for ComplexInlineFragmentsNestedStuffContent: "%v"`, tn.TypeName) } } func __marshalComplexInlineFragmentsNestedStuffContent(v *ComplexInlineFragmentsNestedStuffContent) ([]byte, error) { var typename string switch v := (*v).(type) { case *ComplexInlineFragmentsNestedStuffArticle: typename = "Article" result := struct { TypeName string `json:"__typename"` *ComplexInlineFragmentsNestedStuffArticle }{typename, v} return json.Marshal(result) case *ComplexInlineFragmentsNestedStuffTopic: typename = "Topic" premarshaled, err := v.__premarshalJSON() if err != nil { return nil, err } result := struct { TypeName string `json:"__typename"` *__premarshalComplexInlineFragmentsNestedStuffTopic }{typename, premarshaled} return json.Marshal(result) case *ComplexInlineFragmentsNestedStuffVideo: typename = "Video" result := struct { TypeName string `json:"__typename"` *ComplexInlineFragmentsNestedStuffVideo }{typename, v} return json.Marshal(result) case nil: return []byte("null"), nil default: return nil, fmt.Errorf( `unexpected concrete type for ComplexInlineFragmentsNestedStuffContent: "%T"`, v) } } // ComplexInlineFragmentsNestedStuffTopic includes the requested fields of the GraphQL type Topic. type ComplexInlineFragmentsNestedStuffTopic struct { Typename string `json:"__typename"` Children []ComplexInlineFragmentsNestedStuffTopicChildrenContent `json:"-"` } // GetTypename returns ComplexInlineFragmentsNestedStuffTopic.Typename, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopic) GetTypename() string { return v.Typename } // GetChildren returns ComplexInlineFragmentsNestedStuffTopic.Children, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopic) GetChildren() []ComplexInlineFragmentsNestedStuffTopicChildrenContent { return v.Children } func (v *ComplexInlineFragmentsNestedStuffTopic) UnmarshalJSON(b []byte) error { if string(b) == "null" { return nil } var firstPass struct { *ComplexInlineFragmentsNestedStuffTopic Children []json.RawMessage `json:"children"` graphql.NoUnmarshalJSON } firstPass.ComplexInlineFragmentsNestedStuffTopic = v err := json.Unmarshal(b, &firstPass) if err != nil { return err } { dst := &v.Children src := firstPass.Children *dst = make( []ComplexInlineFragmentsNestedStuffTopicChildrenContent, len(src)) for i, src := range src { dst := &(*dst)[i] if len(src) != 0 && string(src) != "null" { err = __unmarshalComplexInlineFragmentsNestedStuffTopicChildrenContent( src, dst) if err != nil { return fmt.Errorf( "unable to unmarshal ComplexInlineFragmentsNestedStuffTopic.Children: %w", err) } } } } return nil } type __premarshalComplexInlineFragmentsNestedStuffTopic struct { Typename string `json:"__typename"` Children []json.RawMessage `json:"children"` } func (v *ComplexInlineFragmentsNestedStuffTopic) MarshalJSON() ([]byte, error) { premarshaled, err := v.__premarshalJSON() if err != nil { return nil, err } return json.Marshal(premarshaled) } func (v *ComplexInlineFragmentsNestedStuffTopic) __premarshalJSON() (*__premarshalComplexInlineFragmentsNestedStuffTopic, error) { var retval __premarshalComplexInlineFragmentsNestedStuffTopic retval.Typename = v.Typename { 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 = __marshalComplexInlineFragmentsNestedStuffTopicChildrenContent( &src) if err != nil { return nil, fmt.Errorf( "unable to marshal ComplexInlineFragmentsNestedStuffTopic.Children: %w", err) } } } return &retval, nil } // ComplexInlineFragmentsNestedStuffTopicChildrenArticle includes the requested fields of the GraphQL type Article. type ComplexInlineFragmentsNestedStuffTopicChildrenArticle struct { Typename string `json:"__typename"` // ID is the identifier of the content. Id testutil.ID `json:"id"` Text string `json:"text"` Parent ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentTopic `json:"parent"` } // GetTypename returns ComplexInlineFragmentsNestedStuffTopicChildrenArticle.Typename, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticle) GetTypename() string { return v.Typename } // GetId returns ComplexInlineFragmentsNestedStuffTopicChildrenArticle.Id, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticle) GetId() testutil.ID { return v.Id } // GetText returns ComplexInlineFragmentsNestedStuffTopicChildrenArticle.Text, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticle) GetText() string { return v.Text } // GetParent returns ComplexInlineFragmentsNestedStuffTopicChildrenArticle.Parent, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticle) GetParent() ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentTopic { return v.Parent } // ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic includes the requested fields of the GraphQL type Topic. type ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic struct { Children []ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent `json:"-"` } // GetChildren returns ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic.Children, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic) GetChildren() []ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent { return v.Children } func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic) UnmarshalJSON(b []byte) error { if string(b) == "null" { return nil } var firstPass struct { *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic Children []json.RawMessage `json:"children"` graphql.NoUnmarshalJSON } firstPass.ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic = v err := json.Unmarshal(b, &firstPass) if err != nil { return err } { dst := &v.Children src := firstPass.Children *dst = make( []ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent, len(src)) for i, src := range src { dst := &(*dst)[i] if len(src) != 0 && string(src) != "null" { err = __unmarshalComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent( src, dst) if err != nil { return fmt.Errorf( "unable to unmarshal ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic.Children: %w", err) } } } } return nil } type __premarshalComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic struct { Children []json.RawMessage `json:"children"` } func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic) MarshalJSON() ([]byte, error) { premarshaled, err := v.__premarshalJSON() if err != nil { return nil, err } return json.Marshal(premarshaled) } func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic) __premarshalJSON() (*__premarshalComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic, error) { var retval __premarshalComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic { 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 = __marshalComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent( &src) if err != nil { return nil, fmt.Errorf( "unable to marshal ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic.Children: %w", err) } } } return &retval, nil } // ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenArticle includes the requested fields of the GraphQL type Article. type ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenArticle struct { Typename string `json:"__typename"` // ID is the identifier of the content. Id testutil.ID `json:"id"` Name string `json:"name"` } // GetTypename returns ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenArticle.Typename, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenArticle) GetTypename() string { return v.Typename } // GetId returns ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenArticle.Id, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenArticle) GetId() testutil.ID { return v.Id } // GetName returns ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenArticle.Name, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenArticle) GetName() string { return v.Name } // ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent includes the requested fields of the GraphQL interface Content. // // ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent is implemented by the following types: // ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenArticle // ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenTopic // ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenVideo // The GraphQL type's documentation follows. // // Content is implemented by various types like Article, Video, and Topic. type ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent interface { implementsGraphQLInterfaceComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent() // 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 } func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenArticle) implementsGraphQLInterfaceComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent() { } func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenTopic) implementsGraphQLInterfaceComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent() { } func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenVideo) implementsGraphQLInterfaceComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent() { } func __unmarshalComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent(b []byte, v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent) 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(ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenArticle) return json.Unmarshal(b, *v) case "Topic": *v = new(ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenTopic) return json.Unmarshal(b, *v) case "Video": *v = new(ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenVideo) return json.Unmarshal(b, *v) case "": return fmt.Errorf( "response was missing Content.__typename") default: return fmt.Errorf( `unexpected concrete type for ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent: "%v"`, tn.TypeName) } } func __marshalComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent(v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent) ([]byte, error) { var typename string switch v := (*v).(type) { case *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenArticle: typename = "Article" result := struct { TypeName string `json:"__typename"` *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenArticle }{typename, v} return json.Marshal(result) case *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenTopic: typename = "Topic" result := struct { TypeName string `json:"__typename"` *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenTopic }{typename, v} return json.Marshal(result) case *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenVideo: typename = "Video" result := struct { TypeName string `json:"__typename"` *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenVideo }{typename, v} return json.Marshal(result) case nil: return []byte("null"), nil default: return nil, fmt.Errorf( `unexpected concrete type for ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent: "%T"`, v) } } // ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenTopic includes the requested fields of the GraphQL type Topic. type ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenTopic struct { Typename string `json:"__typename"` // ID is the identifier of the content. Id testutil.ID `json:"id"` Name string `json:"name"` } // GetTypename returns ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenTopic.Typename, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenTopic) GetTypename() string { return v.Typename } // GetId returns ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenTopic.Id, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenTopic) GetId() testutil.ID { return v.Id } // GetName returns ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenTopic.Name, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenTopic) GetName() string { return v.Name } // ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenVideo includes the requested fields of the GraphQL type Video. type ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenVideo struct { Typename string `json:"__typename"` // ID is the identifier of the content. Id testutil.ID `json:"id"` Name string `json:"name"` } // GetTypename returns ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenVideo.Typename, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenVideo) GetTypename() string { return v.Typename } // GetId returns ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenVideo.Id, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenVideo) GetId() testutil.ID { return v.Id } // GetName returns ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenVideo.Name, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenVideo) GetName() string { return v.Name } // ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentTopic includes the requested fields of the GraphQL type Topic. type ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentTopic struct { Name string `json:"name"` Parent ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic `json:"parent"` } // GetName returns ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentTopic.Name, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentTopic) GetName() string { return v.Name } // GetParent returns ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentTopic.Parent, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentTopic) GetParent() ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic { return v.Parent } // ComplexInlineFragmentsNestedStuffTopicChildrenContent includes the requested fields of the GraphQL interface Content. // // ComplexInlineFragmentsNestedStuffTopicChildrenContent is implemented by the following types: // ComplexInlineFragmentsNestedStuffTopicChildrenArticle // ComplexInlineFragmentsNestedStuffTopicChildrenTopic // ComplexInlineFragmentsNestedStuffTopicChildrenVideo // The GraphQL type's documentation follows. // // Content is implemented by various types like Article, Video, and Topic. type ComplexInlineFragmentsNestedStuffTopicChildrenContent interface { implementsGraphQLInterfaceComplexInlineFragmentsNestedStuffTopicChildrenContent() // 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 } func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticle) implementsGraphQLInterfaceComplexInlineFragmentsNestedStuffTopicChildrenContent() { } func (v *ComplexInlineFragmentsNestedStuffTopicChildrenTopic) implementsGraphQLInterfaceComplexInlineFragmentsNestedStuffTopicChildrenContent() { } func (v *ComplexInlineFragmentsNestedStuffTopicChildrenVideo) implementsGraphQLInterfaceComplexInlineFragmentsNestedStuffTopicChildrenContent() { } func __unmarshalComplexInlineFragmentsNestedStuffTopicChildrenContent(b []byte, v *ComplexInlineFragmentsNestedStuffTopicChildrenContent) 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(ComplexInlineFragmentsNestedStuffTopicChildrenArticle) return json.Unmarshal(b, *v) case "Topic": *v = new(ComplexInlineFragmentsNestedStuffTopicChildrenTopic) return json.Unmarshal(b, *v) case "Video": *v = new(ComplexInlineFragmentsNestedStuffTopicChildrenVideo) return json.Unmarshal(b, *v) case "": return fmt.Errorf( "response was missing Content.__typename") default: return fmt.Errorf( `unexpected concrete type for ComplexInlineFragmentsNestedStuffTopicChildrenContent: "%v"`, tn.TypeName) } } func __marshalComplexInlineFragmentsNestedStuffTopicChildrenContent(v *ComplexInlineFragmentsNestedStuffTopicChildrenContent) ([]byte, error) { var typename string switch v := (*v).(type) { case *ComplexInlineFragmentsNestedStuffTopicChildrenArticle: typename = "Article" result := struct { TypeName string `json:"__typename"` *ComplexInlineFragmentsNestedStuffTopicChildrenArticle }{typename, v} return json.Marshal(result) case *ComplexInlineFragmentsNestedStuffTopicChildrenTopic: typename = "Topic" result := struct { TypeName string `json:"__typename"` *ComplexInlineFragmentsNestedStuffTopicChildrenTopic }{typename, v} return json.Marshal(result) case *ComplexInlineFragmentsNestedStuffTopicChildrenVideo: typename = "Video" result := struct { TypeName string `json:"__typename"` *ComplexInlineFragmentsNestedStuffTopicChildrenVideo }{typename, v} return json.Marshal(result) case nil: return []byte("null"), nil default: return nil, fmt.Errorf( `unexpected concrete type for ComplexInlineFragmentsNestedStuffTopicChildrenContent: "%T"`, v) } } // ComplexInlineFragmentsNestedStuffTopicChildrenTopic includes the requested fields of the GraphQL type Topic. type ComplexInlineFragmentsNestedStuffTopicChildrenTopic struct { Typename string `json:"__typename"` // ID is the identifier of the content. Id testutil.ID `json:"id"` } // GetTypename returns ComplexInlineFragmentsNestedStuffTopicChildrenTopic.Typename, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenTopic) GetTypename() string { return v.Typename } // GetId returns ComplexInlineFragmentsNestedStuffTopicChildrenTopic.Id, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenTopic) GetId() testutil.ID { return v.Id } // ComplexInlineFragmentsNestedStuffTopicChildrenVideo includes the requested fields of the GraphQL type Video. type ComplexInlineFragmentsNestedStuffTopicChildrenVideo struct { Typename string `json:"__typename"` // ID is the identifier of the content. Id testutil.ID `json:"id"` } // GetTypename returns ComplexInlineFragmentsNestedStuffTopicChildrenVideo.Typename, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenVideo) GetTypename() string { return v.Typename } // GetId returns ComplexInlineFragmentsNestedStuffTopicChildrenVideo.Id, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffTopicChildrenVideo) GetId() testutil.ID { return v.Id } // ComplexInlineFragmentsNestedStuffVideo includes the requested fields of the GraphQL type Video. type ComplexInlineFragmentsNestedStuffVideo struct { Typename string `json:"__typename"` } // GetTypename returns ComplexInlineFragmentsNestedStuffVideo.Typename, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsNestedStuffVideo) GetTypename() string { return v.Typename } // ComplexInlineFragmentsRandomItemArticle includes the requested fields of the GraphQL type Article. type ComplexInlineFragmentsRandomItemArticle struct { Typename string `json:"__typename"` // ID is the identifier of the content. Id testutil.ID `json:"id"` Text string `json:"text"` Name string `json:"name"` } // GetTypename returns ComplexInlineFragmentsRandomItemArticle.Typename, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRandomItemArticle) GetTypename() string { return v.Typename } // GetId returns ComplexInlineFragmentsRandomItemArticle.Id, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRandomItemArticle) GetId() testutil.ID { return v.Id } // GetText returns ComplexInlineFragmentsRandomItemArticle.Text, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRandomItemArticle) GetText() string { return v.Text } // GetName returns ComplexInlineFragmentsRandomItemArticle.Name, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRandomItemArticle) GetName() string { return v.Name } // ComplexInlineFragmentsRandomItemContent includes the requested fields of the GraphQL interface Content. // // ComplexInlineFragmentsRandomItemContent is implemented by the following types: // ComplexInlineFragmentsRandomItemArticle // ComplexInlineFragmentsRandomItemTopic // ComplexInlineFragmentsRandomItemVideo // The GraphQL type's documentation follows. // // Content is implemented by various types like Article, Video, and Topic. type ComplexInlineFragmentsRandomItemContent interface { implementsGraphQLInterfaceComplexInlineFragmentsRandomItemContent() // 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 } func (v *ComplexInlineFragmentsRandomItemArticle) implementsGraphQLInterfaceComplexInlineFragmentsRandomItemContent() { } func (v *ComplexInlineFragmentsRandomItemTopic) implementsGraphQLInterfaceComplexInlineFragmentsRandomItemContent() { } func (v *ComplexInlineFragmentsRandomItemVideo) implementsGraphQLInterfaceComplexInlineFragmentsRandomItemContent() { } func __unmarshalComplexInlineFragmentsRandomItemContent(b []byte, v *ComplexInlineFragmentsRandomItemContent) 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(ComplexInlineFragmentsRandomItemArticle) return json.Unmarshal(b, *v) case "Topic": *v = new(ComplexInlineFragmentsRandomItemTopic) return json.Unmarshal(b, *v) case "Video": *v = new(ComplexInlineFragmentsRandomItemVideo) return json.Unmarshal(b, *v) case "": return fmt.Errorf( "response was missing Content.__typename") default: return fmt.Errorf( `unexpected concrete type for ComplexInlineFragmentsRandomItemContent: "%v"`, tn.TypeName) } } func __marshalComplexInlineFragmentsRandomItemContent(v *ComplexInlineFragmentsRandomItemContent) ([]byte, error) { var typename string switch v := (*v).(type) { case *ComplexInlineFragmentsRandomItemArticle: typename = "Article" result := struct { TypeName string `json:"__typename"` *ComplexInlineFragmentsRandomItemArticle }{typename, v} return json.Marshal(result) case *ComplexInlineFragmentsRandomItemTopic: typename = "Topic" result := struct { TypeName string `json:"__typename"` *ComplexInlineFragmentsRandomItemTopic }{typename, v} return json.Marshal(result) case *ComplexInlineFragmentsRandomItemVideo: typename = "Video" result := struct { TypeName string `json:"__typename"` *ComplexInlineFragmentsRandomItemVideo }{typename, v} return json.Marshal(result) case nil: return []byte("null"), nil default: return nil, fmt.Errorf( `unexpected concrete type for ComplexInlineFragmentsRandomItemContent: "%T"`, v) } } // ComplexInlineFragmentsRandomItemTopic includes the requested fields of the GraphQL type Topic. type ComplexInlineFragmentsRandomItemTopic struct { Typename string `json:"__typename"` // ID is the identifier of the content. Id testutil.ID `json:"id"` Name string `json:"name"` } // GetTypename returns ComplexInlineFragmentsRandomItemTopic.Typename, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRandomItemTopic) GetTypename() string { return v.Typename } // GetId returns ComplexInlineFragmentsRandomItemTopic.Id, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRandomItemTopic) GetId() testutil.ID { return v.Id } // GetName returns ComplexInlineFragmentsRandomItemTopic.Name, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRandomItemTopic) GetName() string { return v.Name } // ComplexInlineFragmentsRandomItemVideo includes the requested fields of the GraphQL type Video. type ComplexInlineFragmentsRandomItemVideo struct { Typename string `json:"__typename"` // ID is the identifier of the content. Id testutil.ID `json:"id"` Name string `json:"name"` Duration int `json:"duration"` } // GetTypename returns ComplexInlineFragmentsRandomItemVideo.Typename, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRandomItemVideo) GetTypename() string { return v.Typename } // GetId returns ComplexInlineFragmentsRandomItemVideo.Id, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRandomItemVideo) GetId() testutil.ID { return v.Id } // GetName returns ComplexInlineFragmentsRandomItemVideo.Name, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRandomItemVideo) GetName() string { return v.Name } // GetDuration returns ComplexInlineFragmentsRandomItemVideo.Duration, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRandomItemVideo) GetDuration() int { return v.Duration } // ComplexInlineFragmentsRepeatedStuffArticle includes the requested fields of the GraphQL type Article. type ComplexInlineFragmentsRepeatedStuffArticle struct { Typename string `json:"__typename"` // ID is the identifier of the content. Id testutil.ID `json:"id"` Url string `json:"url"` // ID is the identifier of the content. OtherId testutil.ID `json:"otherId"` Name string `json:"name"` Text string `json:"text"` OtherName string `json:"otherName"` } // GetTypename returns ComplexInlineFragmentsRepeatedStuffArticle.Typename, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffArticle) GetTypename() string { return v.Typename } // GetId returns ComplexInlineFragmentsRepeatedStuffArticle.Id, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffArticle) GetId() testutil.ID { return v.Id } // GetUrl returns ComplexInlineFragmentsRepeatedStuffArticle.Url, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffArticle) GetUrl() string { return v.Url } // GetOtherId returns ComplexInlineFragmentsRepeatedStuffArticle.OtherId, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffArticle) GetOtherId() testutil.ID { return v.OtherId } // GetName returns ComplexInlineFragmentsRepeatedStuffArticle.Name, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffArticle) GetName() string { return v.Name } // GetText returns ComplexInlineFragmentsRepeatedStuffArticle.Text, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffArticle) GetText() string { return v.Text } // GetOtherName returns ComplexInlineFragmentsRepeatedStuffArticle.OtherName, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffArticle) GetOtherName() string { return v.OtherName } // ComplexInlineFragmentsRepeatedStuffContent includes the requested fields of the GraphQL interface Content. // // ComplexInlineFragmentsRepeatedStuffContent is implemented by the following types: // ComplexInlineFragmentsRepeatedStuffArticle // ComplexInlineFragmentsRepeatedStuffTopic // ComplexInlineFragmentsRepeatedStuffVideo // The GraphQL type's documentation follows. // // Content is implemented by various types like Article, Video, and Topic. type ComplexInlineFragmentsRepeatedStuffContent interface { implementsGraphQLInterfaceComplexInlineFragmentsRepeatedStuffContent() // 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 // GetUrl returns the interface-field "url" from its implementation. GetUrl() string // GetOtherId returns the interface-field "id" from its implementation. // The GraphQL interface field's documentation follows. // // ID is the identifier of the content. GetOtherId() testutil.ID // GetName returns the interface-field "name" from its implementation. GetName() string // GetOtherName returns the interface-field "name" from its implementation. GetOtherName() string } func (v *ComplexInlineFragmentsRepeatedStuffArticle) implementsGraphQLInterfaceComplexInlineFragmentsRepeatedStuffContent() { } func (v *ComplexInlineFragmentsRepeatedStuffTopic) implementsGraphQLInterfaceComplexInlineFragmentsRepeatedStuffContent() { } func (v *ComplexInlineFragmentsRepeatedStuffVideo) implementsGraphQLInterfaceComplexInlineFragmentsRepeatedStuffContent() { } func __unmarshalComplexInlineFragmentsRepeatedStuffContent(b []byte, v *ComplexInlineFragmentsRepeatedStuffContent) 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(ComplexInlineFragmentsRepeatedStuffArticle) return json.Unmarshal(b, *v) case "Topic": *v = new(ComplexInlineFragmentsRepeatedStuffTopic) return json.Unmarshal(b, *v) case "Video": *v = new(ComplexInlineFragmentsRepeatedStuffVideo) return json.Unmarshal(b, *v) case "": return fmt.Errorf( "response was missing Content.__typename") default: return fmt.Errorf( `unexpected concrete type for ComplexInlineFragmentsRepeatedStuffContent: "%v"`, tn.TypeName) } } func __marshalComplexInlineFragmentsRepeatedStuffContent(v *ComplexInlineFragmentsRepeatedStuffContent) ([]byte, error) { var typename string switch v := (*v).(type) { case *ComplexInlineFragmentsRepeatedStuffArticle: typename = "Article" result := struct { TypeName string `json:"__typename"` *ComplexInlineFragmentsRepeatedStuffArticle }{typename, v} return json.Marshal(result) case *ComplexInlineFragmentsRepeatedStuffTopic: typename = "Topic" result := struct { TypeName string `json:"__typename"` *ComplexInlineFragmentsRepeatedStuffTopic }{typename, v} return json.Marshal(result) case *ComplexInlineFragmentsRepeatedStuffVideo: typename = "Video" result := struct { TypeName string `json:"__typename"` *ComplexInlineFragmentsRepeatedStuffVideo }{typename, v} return json.Marshal(result) case nil: return []byte("null"), nil default: return nil, fmt.Errorf( `unexpected concrete type for ComplexInlineFragmentsRepeatedStuffContent: "%T"`, v) } } // ComplexInlineFragmentsRepeatedStuffTopic includes the requested fields of the GraphQL type Topic. type ComplexInlineFragmentsRepeatedStuffTopic struct { Typename string `json:"__typename"` // ID is the identifier of the content. Id testutil.ID `json:"id"` Url string `json:"url"` // ID is the identifier of the content. OtherId testutil.ID `json:"otherId"` Name string `json:"name"` OtherName string `json:"otherName"` } // GetTypename returns ComplexInlineFragmentsRepeatedStuffTopic.Typename, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffTopic) GetTypename() string { return v.Typename } // GetId returns ComplexInlineFragmentsRepeatedStuffTopic.Id, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffTopic) GetId() testutil.ID { return v.Id } // GetUrl returns ComplexInlineFragmentsRepeatedStuffTopic.Url, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffTopic) GetUrl() string { return v.Url } // GetOtherId returns ComplexInlineFragmentsRepeatedStuffTopic.OtherId, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffTopic) GetOtherId() testutil.ID { return v.OtherId } // GetName returns ComplexInlineFragmentsRepeatedStuffTopic.Name, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffTopic) GetName() string { return v.Name } // GetOtherName returns ComplexInlineFragmentsRepeatedStuffTopic.OtherName, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffTopic) GetOtherName() string { return v.OtherName } // ComplexInlineFragmentsRepeatedStuffVideo includes the requested fields of the GraphQL type Video. type ComplexInlineFragmentsRepeatedStuffVideo struct { Typename string `json:"__typename"` // ID is the identifier of the content. Id testutil.ID `json:"id"` Url string `json:"url"` // ID is the identifier of the content. OtherId testutil.ID `json:"otherId"` Name string `json:"name"` OtherName string `json:"otherName"` Duration int `json:"duration"` } // GetTypename returns ComplexInlineFragmentsRepeatedStuffVideo.Typename, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffVideo) GetTypename() string { return v.Typename } // GetId returns ComplexInlineFragmentsRepeatedStuffVideo.Id, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffVideo) GetId() testutil.ID { return v.Id } // GetUrl returns ComplexInlineFragmentsRepeatedStuffVideo.Url, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffVideo) GetUrl() string { return v.Url } // GetOtherId returns ComplexInlineFragmentsRepeatedStuffVideo.OtherId, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffVideo) GetOtherId() testutil.ID { return v.OtherId } // GetName returns ComplexInlineFragmentsRepeatedStuffVideo.Name, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffVideo) GetName() string { return v.Name } // GetOtherName returns ComplexInlineFragmentsRepeatedStuffVideo.OtherName, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffVideo) GetOtherName() string { return v.OtherName } // GetDuration returns ComplexInlineFragmentsRepeatedStuffVideo.Duration, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRepeatedStuffVideo) GetDuration() int { return v.Duration } // ComplexInlineFragmentsResponse is returned by ComplexInlineFragments on success. type ComplexInlineFragmentsResponse struct { Root ComplexInlineFragmentsRootTopic `json:"root"` RandomItem ComplexInlineFragmentsRandomItemContent `json:"-"` RepeatedStuff ComplexInlineFragmentsRepeatedStuffContent `json:"-"` ConflictingStuff ComplexInlineFragmentsConflictingStuffContent `json:"-"` NestedStuff ComplexInlineFragmentsNestedStuffContent `json:"-"` } // GetRoot returns ComplexInlineFragmentsResponse.Root, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsResponse) GetRoot() ComplexInlineFragmentsRootTopic { return v.Root } // GetRandomItem returns ComplexInlineFragmentsResponse.RandomItem, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsResponse) GetRandomItem() ComplexInlineFragmentsRandomItemContent { return v.RandomItem } // GetRepeatedStuff returns ComplexInlineFragmentsResponse.RepeatedStuff, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsResponse) GetRepeatedStuff() ComplexInlineFragmentsRepeatedStuffContent { return v.RepeatedStuff } // GetConflictingStuff returns ComplexInlineFragmentsResponse.ConflictingStuff, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsResponse) GetConflictingStuff() ComplexInlineFragmentsConflictingStuffContent { return v.ConflictingStuff } // GetNestedStuff returns ComplexInlineFragmentsResponse.NestedStuff, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsResponse) GetNestedStuff() ComplexInlineFragmentsNestedStuffContent { return v.NestedStuff } func (v *ComplexInlineFragmentsResponse) UnmarshalJSON(b []byte) error { if string(b) == "null" { return nil } var firstPass struct { *ComplexInlineFragmentsResponse RandomItem json.RawMessage `json:"randomItem"` RepeatedStuff json.RawMessage `json:"repeatedStuff"` ConflictingStuff json.RawMessage `json:"conflictingStuff"` NestedStuff json.RawMessage `json:"nestedStuff"` graphql.NoUnmarshalJSON } firstPass.ComplexInlineFragmentsResponse = 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 = __unmarshalComplexInlineFragmentsRandomItemContent( src, dst) if err != nil { return fmt.Errorf( "unable to unmarshal ComplexInlineFragmentsResponse.RandomItem: %w", err) } } } { dst := &v.RepeatedStuff src := firstPass.RepeatedStuff if len(src) != 0 && string(src) != "null" { err = __unmarshalComplexInlineFragmentsRepeatedStuffContent( src, dst) if err != nil { return fmt.Errorf( "unable to unmarshal ComplexInlineFragmentsResponse.RepeatedStuff: %w", err) } } } { dst := &v.ConflictingStuff src := firstPass.ConflictingStuff if len(src) != 0 && string(src) != "null" { err = __unmarshalComplexInlineFragmentsConflictingStuffContent( src, dst) if err != nil { return fmt.Errorf( "unable to unmarshal ComplexInlineFragmentsResponse.ConflictingStuff: %w", err) } } } { dst := &v.NestedStuff src := firstPass.NestedStuff if len(src) != 0 && string(src) != "null" { err = __unmarshalComplexInlineFragmentsNestedStuffContent( src, dst) if err != nil { return fmt.Errorf( "unable to unmarshal ComplexInlineFragmentsResponse.NestedStuff: %w", err) } } } return nil } type __premarshalComplexInlineFragmentsResponse struct { Root ComplexInlineFragmentsRootTopic `json:"root"` RandomItem json.RawMessage `json:"randomItem"` RepeatedStuff json.RawMessage `json:"repeatedStuff"` ConflictingStuff json.RawMessage `json:"conflictingStuff"` NestedStuff json.RawMessage `json:"nestedStuff"` } func (v *ComplexInlineFragmentsResponse) MarshalJSON() ([]byte, error) { premarshaled, err := v.__premarshalJSON() if err != nil { return nil, err } return json.Marshal(premarshaled) } func (v *ComplexInlineFragmentsResponse) __premarshalJSON() (*__premarshalComplexInlineFragmentsResponse, error) { var retval __premarshalComplexInlineFragmentsResponse retval.Root = v.Root { dst := &retval.RandomItem src := v.RandomItem var err error *dst, err = __marshalComplexInlineFragmentsRandomItemContent( &src) if err != nil { return nil, fmt.Errorf( "unable to marshal ComplexInlineFragmentsResponse.RandomItem: %w", err) } } { dst := &retval.RepeatedStuff src := v.RepeatedStuff var err error *dst, err = __marshalComplexInlineFragmentsRepeatedStuffContent( &src) if err != nil { return nil, fmt.Errorf( "unable to marshal ComplexInlineFragmentsResponse.RepeatedStuff: %w", err) } } { dst := &retval.ConflictingStuff src := v.ConflictingStuff var err error *dst, err = __marshalComplexInlineFragmentsConflictingStuffContent( &src) if err != nil { return nil, fmt.Errorf( "unable to marshal ComplexInlineFragmentsResponse.ConflictingStuff: %w", err) } } { dst := &retval.NestedStuff src := v.NestedStuff var err error *dst, err = __marshalComplexInlineFragmentsNestedStuffContent( &src) if err != nil { return nil, fmt.Errorf( "unable to marshal ComplexInlineFragmentsResponse.NestedStuff: %w", err) } } return &retval, nil } // ComplexInlineFragmentsRootTopic includes the requested fields of the GraphQL type Topic. type ComplexInlineFragmentsRootTopic struct { // ID is documented in the Content interface. Id testutil.ID `json:"id"` SchoolGrade string `json:"schoolGrade"` Name string `json:"name"` } // GetId returns ComplexInlineFragmentsRootTopic.Id, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRootTopic) GetId() testutil.ID { return v.Id } // GetSchoolGrade returns ComplexInlineFragmentsRootTopic.SchoolGrade, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRootTopic) GetSchoolGrade() string { return v.SchoolGrade } // GetName returns ComplexInlineFragmentsRootTopic.Name, and is useful for accessing the field via an interface. func (v *ComplexInlineFragmentsRootTopic) GetName() string { return v.Name } // The query or mutation executed by ComplexInlineFragments. const ComplexInlineFragments_Operation = ` query ComplexInlineFragments { root { id ... on Topic { schoolGrade } ... on Content { name } } randomItem { __typename id ... on Article { text } ... on Content { name } ... on HasDuration { duration } } repeatedStuff: randomItem { __typename id id url otherId: id ... on Article { name text otherName: name } ... on Content { id name otherName: name } ... on HasDuration { duration } } conflictingStuff: randomItem { __typename ... on Article { thumbnail { id thumbnailUrl } } ... on Video { thumbnail { id timestampSec } } } nestedStuff: randomItem { __typename ... on Topic { children { __typename id ... on Article { text parent { ... on Content { name parent { ... on Topic { children { __typename id name } } } } } } } } } } ` // We test all the spread cases from docs/DESIGN.md, see there for more context // on each, as well as various other nonsense. But for abstract-in-abstract // spreads, we can't test cases (4b) and (4c), where I implements J or vice // versa, because gqlparser doesn't support interfaces that implement other // interfaces yet. func ComplexInlineFragments( client graphql.Client, ) (*ComplexInlineFragmentsResponse, error) { req := &graphql.Request{ OpName: "ComplexInlineFragments", Query: ComplexInlineFragments_Operation, } var err error var data ComplexInlineFragmentsResponse resp := &graphql.Response{Data: &data} err = client.MakeRequest( nil, req, resp, ) return &data, err }