Files
genqlient/generate/testdata/snapshots/TestGenerate-CovariantInterfaceImplementation.graphql-CovariantInterfaceImplementation.graphql.go
T
Craig SilversteinandGitHub 587f77046b Expose the graphql operation as a constant in the generated genqlient file (#238)
This allows client code to see the operation (query or mutation) exactly
as genqlient sends it over the wire. This data was already available in
the generated safelist.json file, but now it's easily available from Go
code as well.
    
Fixes #236

I have:
- [x] Written a clear PR title and description (above)
- [x] Signed the [Khan Academy CLA](https://www.khanacademy.org/r/cla)
- [x] Added tests covering my changes, if applicable
- [x] Included a link to the issue fixed, if applicable
- [x] Included documentation, for new features
- [x] Added an entry to the changelog
2022-11-21 08:35:09 -08:00

2416 lines
73 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"
)
// 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
// ContentFieldsTopic
// ContentFieldsVideo
type ContentFields interface {
implementsGraphQLInterfaceContentFields()
// GetNext returns the interface-field "next" from its implementation.
GetNext() ContentFieldsNextContent
// GetRelated returns the interface-field "related" from its implementation.
GetRelated() []ContentFieldsRelatedContent
}
func (v *ContentFieldsArticle) implementsGraphQLInterfaceContentFields() {}
func (v *ContentFieldsTopic) implementsGraphQLInterfaceContentFields() {}
func (v *ContentFieldsVideo) 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 "Topic":
*v = new(ContentFieldsTopic)
return json.Unmarshal(b, *v)
case "Video":
*v = new(ContentFieldsVideo)
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"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalContentFieldsArticle
}{typename, premarshaled}
return json.Marshal(result)
case *ContentFieldsTopic:
typename = "Topic"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalContentFieldsTopic
}{typename, premarshaled}
return json.Marshal(result)
case *ContentFieldsVideo:
typename = "Video"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalContentFieldsVideo
}{typename, premarshaled}
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 {
Next ContentFieldsNextContent `json:"-"`
Related []ContentFieldsRelatedContent `json:"-"`
}
// GetNext returns ContentFieldsArticle.Next, and is useful for accessing the field via an interface.
func (v *ContentFieldsArticle) GetNext() ContentFieldsNextContent { return v.Next }
// GetRelated returns ContentFieldsArticle.Related, and is useful for accessing the field via an interface.
func (v *ContentFieldsArticle) GetRelated() []ContentFieldsRelatedContent { return v.Related }
func (v *ContentFieldsArticle) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*ContentFieldsArticle
Next json.RawMessage `json:"next"`
Related []json.RawMessage `json:"related"`
graphql.NoUnmarshalJSON
}
firstPass.ContentFieldsArticle = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
{
dst := &v.Next
src := firstPass.Next
if len(src) != 0 && string(src) != "null" {
err = __unmarshalContentFieldsNextContent(
src, dst)
if err != nil {
return fmt.Errorf(
"unable to unmarshal ContentFieldsArticle.Next: %w", err)
}
}
}
{
dst := &v.Related
src := firstPass.Related
*dst = make(
[]ContentFieldsRelatedContent,
len(src))
for i, src := range src {
dst := &(*dst)[i]
if len(src) != 0 && string(src) != "null" {
err = __unmarshalContentFieldsRelatedContent(
src, dst)
if err != nil {
return fmt.Errorf(
"unable to unmarshal ContentFieldsArticle.Related: %w", err)
}
}
}
}
return nil
}
type __premarshalContentFieldsArticle struct {
Next json.RawMessage `json:"next"`
Related []json.RawMessage `json:"related"`
}
func (v *ContentFieldsArticle) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *ContentFieldsArticle) __premarshalJSON() (*__premarshalContentFieldsArticle, error) {
var retval __premarshalContentFieldsArticle
{
dst := &retval.Next
src := v.Next
var err error
*dst, err = __marshalContentFieldsNextContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal ContentFieldsArticle.Next: %w", err)
}
}
{
dst := &retval.Related
src := v.Related
*dst = make(
[]json.RawMessage,
len(src))
for i, src := range src {
dst := &(*dst)[i]
var err error
*dst, err = __marshalContentFieldsRelatedContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal ContentFieldsArticle.Related: %w", err)
}
}
}
return &retval, nil
}
// ContentFieldsNextArticle includes the requested fields of the GraphQL type Article.
type ContentFieldsNextArticle struct {
Typename string `json:"__typename"`
// ID is the identifier of the content.
Id testutil.ID `json:"id"`
}
// GetTypename returns ContentFieldsNextArticle.Typename, and is useful for accessing the field via an interface.
func (v *ContentFieldsNextArticle) GetTypename() string { return v.Typename }
// GetId returns ContentFieldsNextArticle.Id, and is useful for accessing the field via an interface.
func (v *ContentFieldsNextArticle) GetId() testutil.ID { return v.Id }
// ContentFieldsNextContent includes the requested fields of the GraphQL interface Content.
//
// ContentFieldsNextContent is implemented by the following types:
// ContentFieldsNextArticle
// ContentFieldsNextTopic
// ContentFieldsNextVideo
// The GraphQL type's documentation follows.
//
// Content is implemented by various types like Article, Video, and Topic.
type ContentFieldsNextContent interface {
implementsGraphQLInterfaceContentFieldsNextContent()
// 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 *ContentFieldsNextArticle) implementsGraphQLInterfaceContentFieldsNextContent() {}
func (v *ContentFieldsNextTopic) implementsGraphQLInterfaceContentFieldsNextContent() {}
func (v *ContentFieldsNextVideo) implementsGraphQLInterfaceContentFieldsNextContent() {}
func __unmarshalContentFieldsNextContent(b []byte, v *ContentFieldsNextContent) 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(ContentFieldsNextArticle)
return json.Unmarshal(b, *v)
case "Topic":
*v = new(ContentFieldsNextTopic)
return json.Unmarshal(b, *v)
case "Video":
*v = new(ContentFieldsNextVideo)
return json.Unmarshal(b, *v)
case "":
return fmt.Errorf(
"response was missing Content.__typename")
default:
return fmt.Errorf(
`unexpected concrete type for ContentFieldsNextContent: "%v"`, tn.TypeName)
}
}
func __marshalContentFieldsNextContent(v *ContentFieldsNextContent) ([]byte, error) {
var typename string
switch v := (*v).(type) {
case *ContentFieldsNextArticle:
typename = "Article"
result := struct {
TypeName string `json:"__typename"`
*ContentFieldsNextArticle
}{typename, v}
return json.Marshal(result)
case *ContentFieldsNextTopic:
typename = "Topic"
result := struct {
TypeName string `json:"__typename"`
*ContentFieldsNextTopic
}{typename, v}
return json.Marshal(result)
case *ContentFieldsNextVideo:
typename = "Video"
result := struct {
TypeName string `json:"__typename"`
*ContentFieldsNextVideo
}{typename, v}
return json.Marshal(result)
case nil:
return []byte("null"), nil
default:
return nil, fmt.Errorf(
`unexpected concrete type for ContentFieldsNextContent: "%T"`, v)
}
}
// ContentFieldsNextTopic includes the requested fields of the GraphQL type Topic.
type ContentFieldsNextTopic struct {
Typename string `json:"__typename"`
// ID is the identifier of the content.
Id testutil.ID `json:"id"`
}
// GetTypename returns ContentFieldsNextTopic.Typename, and is useful for accessing the field via an interface.
func (v *ContentFieldsNextTopic) GetTypename() string { return v.Typename }
// GetId returns ContentFieldsNextTopic.Id, and is useful for accessing the field via an interface.
func (v *ContentFieldsNextTopic) GetId() testutil.ID { return v.Id }
// ContentFieldsNextVideo includes the requested fields of the GraphQL type Video.
type ContentFieldsNextVideo struct {
Typename string `json:"__typename"`
// ID is the identifier of the content.
Id testutil.ID `json:"id"`
}
// GetTypename returns ContentFieldsNextVideo.Typename, and is useful for accessing the field via an interface.
func (v *ContentFieldsNextVideo) GetTypename() string { return v.Typename }
// GetId returns ContentFieldsNextVideo.Id, and is useful for accessing the field via an interface.
func (v *ContentFieldsNextVideo) GetId() testutil.ID { return v.Id }
// ContentFieldsRelatedArticle includes the requested fields of the GraphQL type Article.
type ContentFieldsRelatedArticle struct {
Typename string `json:"__typename"`
// ID is the identifier of the content.
Id testutil.ID `json:"id"`
}
// GetTypename returns ContentFieldsRelatedArticle.Typename, and is useful for accessing the field via an interface.
func (v *ContentFieldsRelatedArticle) GetTypename() string { return v.Typename }
// GetId returns ContentFieldsRelatedArticle.Id, and is useful for accessing the field via an interface.
func (v *ContentFieldsRelatedArticle) GetId() testutil.ID { return v.Id }
// ContentFieldsRelatedContent includes the requested fields of the GraphQL interface Content.
//
// ContentFieldsRelatedContent is implemented by the following types:
// ContentFieldsRelatedArticle
// ContentFieldsRelatedTopic
// ContentFieldsRelatedVideo
// The GraphQL type's documentation follows.
//
// Content is implemented by various types like Article, Video, and Topic.
type ContentFieldsRelatedContent interface {
implementsGraphQLInterfaceContentFieldsRelatedContent()
// 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 *ContentFieldsRelatedArticle) implementsGraphQLInterfaceContentFieldsRelatedContent() {}
func (v *ContentFieldsRelatedTopic) implementsGraphQLInterfaceContentFieldsRelatedContent() {}
func (v *ContentFieldsRelatedVideo) implementsGraphQLInterfaceContentFieldsRelatedContent() {}
func __unmarshalContentFieldsRelatedContent(b []byte, v *ContentFieldsRelatedContent) 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(ContentFieldsRelatedArticle)
return json.Unmarshal(b, *v)
case "Topic":
*v = new(ContentFieldsRelatedTopic)
return json.Unmarshal(b, *v)
case "Video":
*v = new(ContentFieldsRelatedVideo)
return json.Unmarshal(b, *v)
case "":
return fmt.Errorf(
"response was missing Content.__typename")
default:
return fmt.Errorf(
`unexpected concrete type for ContentFieldsRelatedContent: "%v"`, tn.TypeName)
}
}
func __marshalContentFieldsRelatedContent(v *ContentFieldsRelatedContent) ([]byte, error) {
var typename string
switch v := (*v).(type) {
case *ContentFieldsRelatedArticle:
typename = "Article"
result := struct {
TypeName string `json:"__typename"`
*ContentFieldsRelatedArticle
}{typename, v}
return json.Marshal(result)
case *ContentFieldsRelatedTopic:
typename = "Topic"
result := struct {
TypeName string `json:"__typename"`
*ContentFieldsRelatedTopic
}{typename, v}
return json.Marshal(result)
case *ContentFieldsRelatedVideo:
typename = "Video"
result := struct {
TypeName string `json:"__typename"`
*ContentFieldsRelatedVideo
}{typename, v}
return json.Marshal(result)
case nil:
return []byte("null"), nil
default:
return nil, fmt.Errorf(
`unexpected concrete type for ContentFieldsRelatedContent: "%T"`, v)
}
}
// ContentFieldsRelatedTopic includes the requested fields of the GraphQL type Topic.
type ContentFieldsRelatedTopic struct {
Typename string `json:"__typename"`
// ID is the identifier of the content.
Id testutil.ID `json:"id"`
}
// GetTypename returns ContentFieldsRelatedTopic.Typename, and is useful for accessing the field via an interface.
func (v *ContentFieldsRelatedTopic) GetTypename() string { return v.Typename }
// GetId returns ContentFieldsRelatedTopic.Id, and is useful for accessing the field via an interface.
func (v *ContentFieldsRelatedTopic) GetId() testutil.ID { return v.Id }
// ContentFieldsRelatedVideo includes the requested fields of the GraphQL type Video.
type ContentFieldsRelatedVideo struct {
Typename string `json:"__typename"`
// ID is the identifier of the content.
Id testutil.ID `json:"id"`
}
// GetTypename returns ContentFieldsRelatedVideo.Typename, and is useful for accessing the field via an interface.
func (v *ContentFieldsRelatedVideo) GetTypename() string { return v.Typename }
// GetId returns ContentFieldsRelatedVideo.Id, and is useful for accessing the field via an interface.
func (v *ContentFieldsRelatedVideo) GetId() testutil.ID { return v.Id }
// 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 {
Next ContentFieldsNextContent `json:"-"`
Related []ContentFieldsRelatedContent `json:"-"`
}
// GetNext returns ContentFieldsTopic.Next, and is useful for accessing the field via an interface.
func (v *ContentFieldsTopic) GetNext() ContentFieldsNextContent { return v.Next }
// GetRelated returns ContentFieldsTopic.Related, and is useful for accessing the field via an interface.
func (v *ContentFieldsTopic) GetRelated() []ContentFieldsRelatedContent { return v.Related }
func (v *ContentFieldsTopic) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*ContentFieldsTopic
Next json.RawMessage `json:"next"`
Related []json.RawMessage `json:"related"`
graphql.NoUnmarshalJSON
}
firstPass.ContentFieldsTopic = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
{
dst := &v.Next
src := firstPass.Next
if len(src) != 0 && string(src) != "null" {
err = __unmarshalContentFieldsNextContent(
src, dst)
if err != nil {
return fmt.Errorf(
"unable to unmarshal ContentFieldsTopic.Next: %w", err)
}
}
}
{
dst := &v.Related
src := firstPass.Related
*dst = make(
[]ContentFieldsRelatedContent,
len(src))
for i, src := range src {
dst := &(*dst)[i]
if len(src) != 0 && string(src) != "null" {
err = __unmarshalContentFieldsRelatedContent(
src, dst)
if err != nil {
return fmt.Errorf(
"unable to unmarshal ContentFieldsTopic.Related: %w", err)
}
}
}
}
return nil
}
type __premarshalContentFieldsTopic struct {
Next json.RawMessage `json:"next"`
Related []json.RawMessage `json:"related"`
}
func (v *ContentFieldsTopic) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *ContentFieldsTopic) __premarshalJSON() (*__premarshalContentFieldsTopic, error) {
var retval __premarshalContentFieldsTopic
{
dst := &retval.Next
src := v.Next
var err error
*dst, err = __marshalContentFieldsNextContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal ContentFieldsTopic.Next: %w", err)
}
}
{
dst := &retval.Related
src := v.Related
*dst = make(
[]json.RawMessage,
len(src))
for i, src := range src {
dst := &(*dst)[i]
var err error
*dst, err = __marshalContentFieldsRelatedContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal ContentFieldsTopic.Related: %w", err)
}
}
}
return &retval, nil
}
// 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 {
Next ContentFieldsNextContent `json:"-"`
Related []ContentFieldsRelatedContent `json:"-"`
}
// GetNext returns ContentFieldsVideo.Next, and is useful for accessing the field via an interface.
func (v *ContentFieldsVideo) GetNext() ContentFieldsNextContent { return v.Next }
// GetRelated returns ContentFieldsVideo.Related, and is useful for accessing the field via an interface.
func (v *ContentFieldsVideo) GetRelated() []ContentFieldsRelatedContent { return v.Related }
func (v *ContentFieldsVideo) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*ContentFieldsVideo
Next json.RawMessage `json:"next"`
Related []json.RawMessage `json:"related"`
graphql.NoUnmarshalJSON
}
firstPass.ContentFieldsVideo = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
{
dst := &v.Next
src := firstPass.Next
if len(src) != 0 && string(src) != "null" {
err = __unmarshalContentFieldsNextContent(
src, dst)
if err != nil {
return fmt.Errorf(
"unable to unmarshal ContentFieldsVideo.Next: %w", err)
}
}
}
{
dst := &v.Related
src := firstPass.Related
*dst = make(
[]ContentFieldsRelatedContent,
len(src))
for i, src := range src {
dst := &(*dst)[i]
if len(src) != 0 && string(src) != "null" {
err = __unmarshalContentFieldsRelatedContent(
src, dst)
if err != nil {
return fmt.Errorf(
"unable to unmarshal ContentFieldsVideo.Related: %w", err)
}
}
}
}
return nil
}
type __premarshalContentFieldsVideo struct {
Next json.RawMessage `json:"next"`
Related []json.RawMessage `json:"related"`
}
func (v *ContentFieldsVideo) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *ContentFieldsVideo) __premarshalJSON() (*__premarshalContentFieldsVideo, error) {
var retval __premarshalContentFieldsVideo
{
dst := &retval.Next
src := v.Next
var err error
*dst, err = __marshalContentFieldsNextContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal ContentFieldsVideo.Next: %w", err)
}
}
{
dst := &retval.Related
src := v.Related
*dst = make(
[]json.RawMessage,
len(src))
for i, src := range src {
dst := &(*dst)[i]
var err error
*dst, err = __marshalContentFieldsRelatedContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal ContentFieldsVideo.Related: %w", err)
}
}
}
return &retval, nil
}
// CovariantInterfaceImplementationRandomItemArticle includes the requested fields of the GraphQL type Article.
type CovariantInterfaceImplementationRandomItemArticle struct {
Typename string `json:"__typename"`
// ID is the identifier of the content.
Id testutil.ID `json:"id"`
Next CovariantInterfaceImplementationRandomItemContentNextContent `json:"-"`
Related []CovariantInterfaceImplementationRandomItemContentRelatedContent `json:"-"`
}
// GetTypename returns CovariantInterfaceImplementationRandomItemArticle.Typename, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemArticle) GetTypename() string { return v.Typename }
// GetId returns CovariantInterfaceImplementationRandomItemArticle.Id, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemArticle) GetId() testutil.ID { return v.Id }
// GetNext returns CovariantInterfaceImplementationRandomItemArticle.Next, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemArticle) GetNext() CovariantInterfaceImplementationRandomItemContentNextContent {
return v.Next
}
// GetRelated returns CovariantInterfaceImplementationRandomItemArticle.Related, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemArticle) GetRelated() []CovariantInterfaceImplementationRandomItemContentRelatedContent {
return v.Related
}
func (v *CovariantInterfaceImplementationRandomItemArticle) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*CovariantInterfaceImplementationRandomItemArticle
Next json.RawMessage `json:"next"`
Related []json.RawMessage `json:"related"`
graphql.NoUnmarshalJSON
}
firstPass.CovariantInterfaceImplementationRandomItemArticle = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
{
dst := &v.Next
src := firstPass.Next
if len(src) != 0 && string(src) != "null" {
err = __unmarshalCovariantInterfaceImplementationRandomItemContentNextContent(
src, dst)
if err != nil {
return fmt.Errorf(
"unable to unmarshal CovariantInterfaceImplementationRandomItemArticle.Next: %w", err)
}
}
}
{
dst := &v.Related
src := firstPass.Related
*dst = make(
[]CovariantInterfaceImplementationRandomItemContentRelatedContent,
len(src))
for i, src := range src {
dst := &(*dst)[i]
if len(src) != 0 && string(src) != "null" {
err = __unmarshalCovariantInterfaceImplementationRandomItemContentRelatedContent(
src, dst)
if err != nil {
return fmt.Errorf(
"unable to unmarshal CovariantInterfaceImplementationRandomItemArticle.Related: %w", err)
}
}
}
}
return nil
}
type __premarshalCovariantInterfaceImplementationRandomItemArticle struct {
Typename string `json:"__typename"`
Id testutil.ID `json:"id"`
Next json.RawMessage `json:"next"`
Related []json.RawMessage `json:"related"`
}
func (v *CovariantInterfaceImplementationRandomItemArticle) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *CovariantInterfaceImplementationRandomItemArticle) __premarshalJSON() (*__premarshalCovariantInterfaceImplementationRandomItemArticle, error) {
var retval __premarshalCovariantInterfaceImplementationRandomItemArticle
retval.Typename = v.Typename
retval.Id = v.Id
{
dst := &retval.Next
src := v.Next
var err error
*dst, err = __marshalCovariantInterfaceImplementationRandomItemContentNextContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal CovariantInterfaceImplementationRandomItemArticle.Next: %w", err)
}
}
{
dst := &retval.Related
src := v.Related
*dst = make(
[]json.RawMessage,
len(src))
for i, src := range src {
dst := &(*dst)[i]
var err error
*dst, err = __marshalCovariantInterfaceImplementationRandomItemContentRelatedContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal CovariantInterfaceImplementationRandomItemArticle.Related: %w", err)
}
}
}
return &retval, nil
}
// CovariantInterfaceImplementationRandomItemContent includes the requested fields of the GraphQL interface Content.
//
// CovariantInterfaceImplementationRandomItemContent is implemented by the following types:
// CovariantInterfaceImplementationRandomItemArticle
// CovariantInterfaceImplementationRandomItemTopic
// CovariantInterfaceImplementationRandomItemVideo
// The GraphQL type's documentation follows.
//
// Content is implemented by various types like Article, Video, and Topic.
type CovariantInterfaceImplementationRandomItemContent interface {
implementsGraphQLInterfaceCovariantInterfaceImplementationRandomItemContent()
// 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
// GetNext returns the interface-field "next" from its implementation.
GetNext() CovariantInterfaceImplementationRandomItemContentNextContent
// GetRelated returns the interface-field "related" from its implementation.
GetRelated() []CovariantInterfaceImplementationRandomItemContentRelatedContent
}
func (v *CovariantInterfaceImplementationRandomItemArticle) implementsGraphQLInterfaceCovariantInterfaceImplementationRandomItemContent() {
}
func (v *CovariantInterfaceImplementationRandomItemTopic) implementsGraphQLInterfaceCovariantInterfaceImplementationRandomItemContent() {
}
func (v *CovariantInterfaceImplementationRandomItemVideo) implementsGraphQLInterfaceCovariantInterfaceImplementationRandomItemContent() {
}
func __unmarshalCovariantInterfaceImplementationRandomItemContent(b []byte, v *CovariantInterfaceImplementationRandomItemContent) 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(CovariantInterfaceImplementationRandomItemArticle)
return json.Unmarshal(b, *v)
case "Topic":
*v = new(CovariantInterfaceImplementationRandomItemTopic)
return json.Unmarshal(b, *v)
case "Video":
*v = new(CovariantInterfaceImplementationRandomItemVideo)
return json.Unmarshal(b, *v)
case "":
return fmt.Errorf(
"response was missing Content.__typename")
default:
return fmt.Errorf(
`unexpected concrete type for CovariantInterfaceImplementationRandomItemContent: "%v"`, tn.TypeName)
}
}
func __marshalCovariantInterfaceImplementationRandomItemContent(v *CovariantInterfaceImplementationRandomItemContent) ([]byte, error) {
var typename string
switch v := (*v).(type) {
case *CovariantInterfaceImplementationRandomItemArticle:
typename = "Article"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalCovariantInterfaceImplementationRandomItemArticle
}{typename, premarshaled}
return json.Marshal(result)
case *CovariantInterfaceImplementationRandomItemTopic:
typename = "Topic"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalCovariantInterfaceImplementationRandomItemTopic
}{typename, premarshaled}
return json.Marshal(result)
case *CovariantInterfaceImplementationRandomItemVideo:
typename = "Video"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalCovariantInterfaceImplementationRandomItemVideo
}{typename, premarshaled}
return json.Marshal(result)
case nil:
return []byte("null"), nil
default:
return nil, fmt.Errorf(
`unexpected concrete type for CovariantInterfaceImplementationRandomItemContent: "%T"`, v)
}
}
// CovariantInterfaceImplementationRandomItemContentNextArticle includes the requested fields of the GraphQL type Article.
type CovariantInterfaceImplementationRandomItemContentNextArticle struct {
Typename string `json:"__typename"`
ContentFieldsArticle `json:"-"`
}
// GetTypename returns CovariantInterfaceImplementationRandomItemContentNextArticle.Typename, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemContentNextArticle) GetTypename() string {
return v.Typename
}
// GetNext returns CovariantInterfaceImplementationRandomItemContentNextArticle.Next, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemContentNextArticle) GetNext() ContentFieldsNextContent {
return v.ContentFieldsArticle.Next
}
// GetRelated returns CovariantInterfaceImplementationRandomItemContentNextArticle.Related, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemContentNextArticle) GetRelated() []ContentFieldsRelatedContent {
return v.ContentFieldsArticle.Related
}
func (v *CovariantInterfaceImplementationRandomItemContentNextArticle) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*CovariantInterfaceImplementationRandomItemContentNextArticle
graphql.NoUnmarshalJSON
}
firstPass.CovariantInterfaceImplementationRandomItemContentNextArticle = 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 __premarshalCovariantInterfaceImplementationRandomItemContentNextArticle struct {
Typename string `json:"__typename"`
Next json.RawMessage `json:"next"`
Related []json.RawMessage `json:"related"`
}
func (v *CovariantInterfaceImplementationRandomItemContentNextArticle) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *CovariantInterfaceImplementationRandomItemContentNextArticle) __premarshalJSON() (*__premarshalCovariantInterfaceImplementationRandomItemContentNextArticle, error) {
var retval __premarshalCovariantInterfaceImplementationRandomItemContentNextArticle
retval.Typename = v.Typename
{
dst := &retval.Next
src := v.ContentFieldsArticle.Next
var err error
*dst, err = __marshalContentFieldsNextContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal CovariantInterfaceImplementationRandomItemContentNextArticle.ContentFieldsArticle.Next: %w", err)
}
}
{
dst := &retval.Related
src := v.ContentFieldsArticle.Related
*dst = make(
[]json.RawMessage,
len(src))
for i, src := range src {
dst := &(*dst)[i]
var err error
*dst, err = __marshalContentFieldsRelatedContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal CovariantInterfaceImplementationRandomItemContentNextArticle.ContentFieldsArticle.Related: %w", err)
}
}
}
return &retval, nil
}
// CovariantInterfaceImplementationRandomItemContentNextContent includes the requested fields of the GraphQL interface Content.
//
// CovariantInterfaceImplementationRandomItemContentNextContent is implemented by the following types:
// CovariantInterfaceImplementationRandomItemContentNextArticle
// CovariantInterfaceImplementationRandomItemContentNextTopic
// CovariantInterfaceImplementationRandomItemContentNextVideo
// The GraphQL type's documentation follows.
//
// Content is implemented by various types like Article, Video, and Topic.
type CovariantInterfaceImplementationRandomItemContentNextContent interface {
implementsGraphQLInterfaceCovariantInterfaceImplementationRandomItemContentNextContent()
// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
GetTypename() string
ContentFields
}
func (v *CovariantInterfaceImplementationRandomItemContentNextArticle) implementsGraphQLInterfaceCovariantInterfaceImplementationRandomItemContentNextContent() {
}
func (v *CovariantInterfaceImplementationRandomItemContentNextTopic) implementsGraphQLInterfaceCovariantInterfaceImplementationRandomItemContentNextContent() {
}
func (v *CovariantInterfaceImplementationRandomItemContentNextVideo) implementsGraphQLInterfaceCovariantInterfaceImplementationRandomItemContentNextContent() {
}
func __unmarshalCovariantInterfaceImplementationRandomItemContentNextContent(b []byte, v *CovariantInterfaceImplementationRandomItemContentNextContent) 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(CovariantInterfaceImplementationRandomItemContentNextArticle)
return json.Unmarshal(b, *v)
case "Topic":
*v = new(CovariantInterfaceImplementationRandomItemContentNextTopic)
return json.Unmarshal(b, *v)
case "Video":
*v = new(CovariantInterfaceImplementationRandomItemContentNextVideo)
return json.Unmarshal(b, *v)
case "":
return fmt.Errorf(
"response was missing Content.__typename")
default:
return fmt.Errorf(
`unexpected concrete type for CovariantInterfaceImplementationRandomItemContentNextContent: "%v"`, tn.TypeName)
}
}
func __marshalCovariantInterfaceImplementationRandomItemContentNextContent(v *CovariantInterfaceImplementationRandomItemContentNextContent) ([]byte, error) {
var typename string
switch v := (*v).(type) {
case *CovariantInterfaceImplementationRandomItemContentNextArticle:
typename = "Article"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalCovariantInterfaceImplementationRandomItemContentNextArticle
}{typename, premarshaled}
return json.Marshal(result)
case *CovariantInterfaceImplementationRandomItemContentNextTopic:
typename = "Topic"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalCovariantInterfaceImplementationRandomItemContentNextTopic
}{typename, premarshaled}
return json.Marshal(result)
case *CovariantInterfaceImplementationRandomItemContentNextVideo:
typename = "Video"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalCovariantInterfaceImplementationRandomItemContentNextVideo
}{typename, premarshaled}
return json.Marshal(result)
case nil:
return []byte("null"), nil
default:
return nil, fmt.Errorf(
`unexpected concrete type for CovariantInterfaceImplementationRandomItemContentNextContent: "%T"`, v)
}
}
// CovariantInterfaceImplementationRandomItemContentNextTopic includes the requested fields of the GraphQL type Topic.
type CovariantInterfaceImplementationRandomItemContentNextTopic struct {
Typename string `json:"__typename"`
ContentFieldsTopic `json:"-"`
}
// GetTypename returns CovariantInterfaceImplementationRandomItemContentNextTopic.Typename, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemContentNextTopic) GetTypename() string {
return v.Typename
}
// GetNext returns CovariantInterfaceImplementationRandomItemContentNextTopic.Next, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemContentNextTopic) GetNext() ContentFieldsNextContent {
return v.ContentFieldsTopic.Next
}
// GetRelated returns CovariantInterfaceImplementationRandomItemContentNextTopic.Related, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemContentNextTopic) GetRelated() []ContentFieldsRelatedContent {
return v.ContentFieldsTopic.Related
}
func (v *CovariantInterfaceImplementationRandomItemContentNextTopic) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*CovariantInterfaceImplementationRandomItemContentNextTopic
graphql.NoUnmarshalJSON
}
firstPass.CovariantInterfaceImplementationRandomItemContentNextTopic = 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 __premarshalCovariantInterfaceImplementationRandomItemContentNextTopic struct {
Typename string `json:"__typename"`
Next json.RawMessage `json:"next"`
Related []json.RawMessage `json:"related"`
}
func (v *CovariantInterfaceImplementationRandomItemContentNextTopic) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *CovariantInterfaceImplementationRandomItemContentNextTopic) __premarshalJSON() (*__premarshalCovariantInterfaceImplementationRandomItemContentNextTopic, error) {
var retval __premarshalCovariantInterfaceImplementationRandomItemContentNextTopic
retval.Typename = v.Typename
{
dst := &retval.Next
src := v.ContentFieldsTopic.Next
var err error
*dst, err = __marshalContentFieldsNextContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal CovariantInterfaceImplementationRandomItemContentNextTopic.ContentFieldsTopic.Next: %w", err)
}
}
{
dst := &retval.Related
src := v.ContentFieldsTopic.Related
*dst = make(
[]json.RawMessage,
len(src))
for i, src := range src {
dst := &(*dst)[i]
var err error
*dst, err = __marshalContentFieldsRelatedContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal CovariantInterfaceImplementationRandomItemContentNextTopic.ContentFieldsTopic.Related: %w", err)
}
}
}
return &retval, nil
}
// CovariantInterfaceImplementationRandomItemContentNextVideo includes the requested fields of the GraphQL type Video.
type CovariantInterfaceImplementationRandomItemContentNextVideo struct {
Typename string `json:"__typename"`
ContentFieldsVideo `json:"-"`
}
// GetTypename returns CovariantInterfaceImplementationRandomItemContentNextVideo.Typename, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemContentNextVideo) GetTypename() string {
return v.Typename
}
// GetNext returns CovariantInterfaceImplementationRandomItemContentNextVideo.Next, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemContentNextVideo) GetNext() ContentFieldsNextContent {
return v.ContentFieldsVideo.Next
}
// GetRelated returns CovariantInterfaceImplementationRandomItemContentNextVideo.Related, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemContentNextVideo) GetRelated() []ContentFieldsRelatedContent {
return v.ContentFieldsVideo.Related
}
func (v *CovariantInterfaceImplementationRandomItemContentNextVideo) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*CovariantInterfaceImplementationRandomItemContentNextVideo
graphql.NoUnmarshalJSON
}
firstPass.CovariantInterfaceImplementationRandomItemContentNextVideo = 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 __premarshalCovariantInterfaceImplementationRandomItemContentNextVideo struct {
Typename string `json:"__typename"`
Next json.RawMessage `json:"next"`
Related []json.RawMessage `json:"related"`
}
func (v *CovariantInterfaceImplementationRandomItemContentNextVideo) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *CovariantInterfaceImplementationRandomItemContentNextVideo) __premarshalJSON() (*__premarshalCovariantInterfaceImplementationRandomItemContentNextVideo, error) {
var retval __premarshalCovariantInterfaceImplementationRandomItemContentNextVideo
retval.Typename = v.Typename
{
dst := &retval.Next
src := v.ContentFieldsVideo.Next
var err error
*dst, err = __marshalContentFieldsNextContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal CovariantInterfaceImplementationRandomItemContentNextVideo.ContentFieldsVideo.Next: %w", err)
}
}
{
dst := &retval.Related
src := v.ContentFieldsVideo.Related
*dst = make(
[]json.RawMessage,
len(src))
for i, src := range src {
dst := &(*dst)[i]
var err error
*dst, err = __marshalContentFieldsRelatedContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal CovariantInterfaceImplementationRandomItemContentNextVideo.ContentFieldsVideo.Related: %w", err)
}
}
}
return &retval, nil
}
// CovariantInterfaceImplementationRandomItemContentRelatedArticle includes the requested fields of the GraphQL type Article.
type CovariantInterfaceImplementationRandomItemContentRelatedArticle struct {
Typename string `json:"__typename"`
ContentFieldsArticle `json:"-"`
}
// GetTypename returns CovariantInterfaceImplementationRandomItemContentRelatedArticle.Typename, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemContentRelatedArticle) GetTypename() string {
return v.Typename
}
// GetNext returns CovariantInterfaceImplementationRandomItemContentRelatedArticle.Next, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemContentRelatedArticle) GetNext() ContentFieldsNextContent {
return v.ContentFieldsArticle.Next
}
// GetRelated returns CovariantInterfaceImplementationRandomItemContentRelatedArticle.Related, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemContentRelatedArticle) GetRelated() []ContentFieldsRelatedContent {
return v.ContentFieldsArticle.Related
}
func (v *CovariantInterfaceImplementationRandomItemContentRelatedArticle) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*CovariantInterfaceImplementationRandomItemContentRelatedArticle
graphql.NoUnmarshalJSON
}
firstPass.CovariantInterfaceImplementationRandomItemContentRelatedArticle = 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 __premarshalCovariantInterfaceImplementationRandomItemContentRelatedArticle struct {
Typename string `json:"__typename"`
Next json.RawMessage `json:"next"`
Related []json.RawMessage `json:"related"`
}
func (v *CovariantInterfaceImplementationRandomItemContentRelatedArticle) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *CovariantInterfaceImplementationRandomItemContentRelatedArticle) __premarshalJSON() (*__premarshalCovariantInterfaceImplementationRandomItemContentRelatedArticle, error) {
var retval __premarshalCovariantInterfaceImplementationRandomItemContentRelatedArticle
retval.Typename = v.Typename
{
dst := &retval.Next
src := v.ContentFieldsArticle.Next
var err error
*dst, err = __marshalContentFieldsNextContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal CovariantInterfaceImplementationRandomItemContentRelatedArticle.ContentFieldsArticle.Next: %w", err)
}
}
{
dst := &retval.Related
src := v.ContentFieldsArticle.Related
*dst = make(
[]json.RawMessage,
len(src))
for i, src := range src {
dst := &(*dst)[i]
var err error
*dst, err = __marshalContentFieldsRelatedContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal CovariantInterfaceImplementationRandomItemContentRelatedArticle.ContentFieldsArticle.Related: %w", err)
}
}
}
return &retval, nil
}
// CovariantInterfaceImplementationRandomItemContentRelatedContent includes the requested fields of the GraphQL interface Content.
//
// CovariantInterfaceImplementationRandomItemContentRelatedContent is implemented by the following types:
// CovariantInterfaceImplementationRandomItemContentRelatedArticle
// CovariantInterfaceImplementationRandomItemContentRelatedTopic
// CovariantInterfaceImplementationRandomItemContentRelatedVideo
// The GraphQL type's documentation follows.
//
// Content is implemented by various types like Article, Video, and Topic.
type CovariantInterfaceImplementationRandomItemContentRelatedContent interface {
implementsGraphQLInterfaceCovariantInterfaceImplementationRandomItemContentRelatedContent()
// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
GetTypename() string
ContentFields
}
func (v *CovariantInterfaceImplementationRandomItemContentRelatedArticle) implementsGraphQLInterfaceCovariantInterfaceImplementationRandomItemContentRelatedContent() {
}
func (v *CovariantInterfaceImplementationRandomItemContentRelatedTopic) implementsGraphQLInterfaceCovariantInterfaceImplementationRandomItemContentRelatedContent() {
}
func (v *CovariantInterfaceImplementationRandomItemContentRelatedVideo) implementsGraphQLInterfaceCovariantInterfaceImplementationRandomItemContentRelatedContent() {
}
func __unmarshalCovariantInterfaceImplementationRandomItemContentRelatedContent(b []byte, v *CovariantInterfaceImplementationRandomItemContentRelatedContent) 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(CovariantInterfaceImplementationRandomItemContentRelatedArticle)
return json.Unmarshal(b, *v)
case "Topic":
*v = new(CovariantInterfaceImplementationRandomItemContentRelatedTopic)
return json.Unmarshal(b, *v)
case "Video":
*v = new(CovariantInterfaceImplementationRandomItemContentRelatedVideo)
return json.Unmarshal(b, *v)
case "":
return fmt.Errorf(
"response was missing Content.__typename")
default:
return fmt.Errorf(
`unexpected concrete type for CovariantInterfaceImplementationRandomItemContentRelatedContent: "%v"`, tn.TypeName)
}
}
func __marshalCovariantInterfaceImplementationRandomItemContentRelatedContent(v *CovariantInterfaceImplementationRandomItemContentRelatedContent) ([]byte, error) {
var typename string
switch v := (*v).(type) {
case *CovariantInterfaceImplementationRandomItemContentRelatedArticle:
typename = "Article"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalCovariantInterfaceImplementationRandomItemContentRelatedArticle
}{typename, premarshaled}
return json.Marshal(result)
case *CovariantInterfaceImplementationRandomItemContentRelatedTopic:
typename = "Topic"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalCovariantInterfaceImplementationRandomItemContentRelatedTopic
}{typename, premarshaled}
return json.Marshal(result)
case *CovariantInterfaceImplementationRandomItemContentRelatedVideo:
typename = "Video"
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
result := struct {
TypeName string `json:"__typename"`
*__premarshalCovariantInterfaceImplementationRandomItemContentRelatedVideo
}{typename, premarshaled}
return json.Marshal(result)
case nil:
return []byte("null"), nil
default:
return nil, fmt.Errorf(
`unexpected concrete type for CovariantInterfaceImplementationRandomItemContentRelatedContent: "%T"`, v)
}
}
// CovariantInterfaceImplementationRandomItemContentRelatedTopic includes the requested fields of the GraphQL type Topic.
type CovariantInterfaceImplementationRandomItemContentRelatedTopic struct {
Typename string `json:"__typename"`
ContentFieldsTopic `json:"-"`
}
// GetTypename returns CovariantInterfaceImplementationRandomItemContentRelatedTopic.Typename, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemContentRelatedTopic) GetTypename() string {
return v.Typename
}
// GetNext returns CovariantInterfaceImplementationRandomItemContentRelatedTopic.Next, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemContentRelatedTopic) GetNext() ContentFieldsNextContent {
return v.ContentFieldsTopic.Next
}
// GetRelated returns CovariantInterfaceImplementationRandomItemContentRelatedTopic.Related, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemContentRelatedTopic) GetRelated() []ContentFieldsRelatedContent {
return v.ContentFieldsTopic.Related
}
func (v *CovariantInterfaceImplementationRandomItemContentRelatedTopic) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*CovariantInterfaceImplementationRandomItemContentRelatedTopic
graphql.NoUnmarshalJSON
}
firstPass.CovariantInterfaceImplementationRandomItemContentRelatedTopic = 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 __premarshalCovariantInterfaceImplementationRandomItemContentRelatedTopic struct {
Typename string `json:"__typename"`
Next json.RawMessage `json:"next"`
Related []json.RawMessage `json:"related"`
}
func (v *CovariantInterfaceImplementationRandomItemContentRelatedTopic) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *CovariantInterfaceImplementationRandomItemContentRelatedTopic) __premarshalJSON() (*__premarshalCovariantInterfaceImplementationRandomItemContentRelatedTopic, error) {
var retval __premarshalCovariantInterfaceImplementationRandomItemContentRelatedTopic
retval.Typename = v.Typename
{
dst := &retval.Next
src := v.ContentFieldsTopic.Next
var err error
*dst, err = __marshalContentFieldsNextContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal CovariantInterfaceImplementationRandomItemContentRelatedTopic.ContentFieldsTopic.Next: %w", err)
}
}
{
dst := &retval.Related
src := v.ContentFieldsTopic.Related
*dst = make(
[]json.RawMessage,
len(src))
for i, src := range src {
dst := &(*dst)[i]
var err error
*dst, err = __marshalContentFieldsRelatedContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal CovariantInterfaceImplementationRandomItemContentRelatedTopic.ContentFieldsTopic.Related: %w", err)
}
}
}
return &retval, nil
}
// CovariantInterfaceImplementationRandomItemContentRelatedVideo includes the requested fields of the GraphQL type Video.
type CovariantInterfaceImplementationRandomItemContentRelatedVideo struct {
Typename string `json:"__typename"`
ContentFieldsVideo `json:"-"`
}
// GetTypename returns CovariantInterfaceImplementationRandomItemContentRelatedVideo.Typename, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemContentRelatedVideo) GetTypename() string {
return v.Typename
}
// GetNext returns CovariantInterfaceImplementationRandomItemContentRelatedVideo.Next, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemContentRelatedVideo) GetNext() ContentFieldsNextContent {
return v.ContentFieldsVideo.Next
}
// GetRelated returns CovariantInterfaceImplementationRandomItemContentRelatedVideo.Related, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemContentRelatedVideo) GetRelated() []ContentFieldsRelatedContent {
return v.ContentFieldsVideo.Related
}
func (v *CovariantInterfaceImplementationRandomItemContentRelatedVideo) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*CovariantInterfaceImplementationRandomItemContentRelatedVideo
graphql.NoUnmarshalJSON
}
firstPass.CovariantInterfaceImplementationRandomItemContentRelatedVideo = 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 __premarshalCovariantInterfaceImplementationRandomItemContentRelatedVideo struct {
Typename string `json:"__typename"`
Next json.RawMessage `json:"next"`
Related []json.RawMessage `json:"related"`
}
func (v *CovariantInterfaceImplementationRandomItemContentRelatedVideo) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *CovariantInterfaceImplementationRandomItemContentRelatedVideo) __premarshalJSON() (*__premarshalCovariantInterfaceImplementationRandomItemContentRelatedVideo, error) {
var retval __premarshalCovariantInterfaceImplementationRandomItemContentRelatedVideo
retval.Typename = v.Typename
{
dst := &retval.Next
src := v.ContentFieldsVideo.Next
var err error
*dst, err = __marshalContentFieldsNextContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal CovariantInterfaceImplementationRandomItemContentRelatedVideo.ContentFieldsVideo.Next: %w", err)
}
}
{
dst := &retval.Related
src := v.ContentFieldsVideo.Related
*dst = make(
[]json.RawMessage,
len(src))
for i, src := range src {
dst := &(*dst)[i]
var err error
*dst, err = __marshalContentFieldsRelatedContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal CovariantInterfaceImplementationRandomItemContentRelatedVideo.ContentFieldsVideo.Related: %w", err)
}
}
}
return &retval, nil
}
// CovariantInterfaceImplementationRandomItemTopic includes the requested fields of the GraphQL type Topic.
type CovariantInterfaceImplementationRandomItemTopic struct {
Typename string `json:"__typename"`
// ID is the identifier of the content.
Id testutil.ID `json:"id"`
Next CovariantInterfaceImplementationRandomItemContentNextContent `json:"-"`
Related []CovariantInterfaceImplementationRandomItemContentRelatedContent `json:"-"`
}
// GetTypename returns CovariantInterfaceImplementationRandomItemTopic.Typename, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemTopic) GetTypename() string { return v.Typename }
// GetId returns CovariantInterfaceImplementationRandomItemTopic.Id, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemTopic) GetId() testutil.ID { return v.Id }
// GetNext returns CovariantInterfaceImplementationRandomItemTopic.Next, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemTopic) GetNext() CovariantInterfaceImplementationRandomItemContentNextContent {
return v.Next
}
// GetRelated returns CovariantInterfaceImplementationRandomItemTopic.Related, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemTopic) GetRelated() []CovariantInterfaceImplementationRandomItemContentRelatedContent {
return v.Related
}
func (v *CovariantInterfaceImplementationRandomItemTopic) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*CovariantInterfaceImplementationRandomItemTopic
Next json.RawMessage `json:"next"`
Related []json.RawMessage `json:"related"`
graphql.NoUnmarshalJSON
}
firstPass.CovariantInterfaceImplementationRandomItemTopic = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
{
dst := &v.Next
src := firstPass.Next
if len(src) != 0 && string(src) != "null" {
err = __unmarshalCovariantInterfaceImplementationRandomItemContentNextContent(
src, dst)
if err != nil {
return fmt.Errorf(
"unable to unmarshal CovariantInterfaceImplementationRandomItemTopic.Next: %w", err)
}
}
}
{
dst := &v.Related
src := firstPass.Related
*dst = make(
[]CovariantInterfaceImplementationRandomItemContentRelatedContent,
len(src))
for i, src := range src {
dst := &(*dst)[i]
if len(src) != 0 && string(src) != "null" {
err = __unmarshalCovariantInterfaceImplementationRandomItemContentRelatedContent(
src, dst)
if err != nil {
return fmt.Errorf(
"unable to unmarshal CovariantInterfaceImplementationRandomItemTopic.Related: %w", err)
}
}
}
}
return nil
}
type __premarshalCovariantInterfaceImplementationRandomItemTopic struct {
Typename string `json:"__typename"`
Id testutil.ID `json:"id"`
Next json.RawMessage `json:"next"`
Related []json.RawMessage `json:"related"`
}
func (v *CovariantInterfaceImplementationRandomItemTopic) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *CovariantInterfaceImplementationRandomItemTopic) __premarshalJSON() (*__premarshalCovariantInterfaceImplementationRandomItemTopic, error) {
var retval __premarshalCovariantInterfaceImplementationRandomItemTopic
retval.Typename = v.Typename
retval.Id = v.Id
{
dst := &retval.Next
src := v.Next
var err error
*dst, err = __marshalCovariantInterfaceImplementationRandomItemContentNextContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal CovariantInterfaceImplementationRandomItemTopic.Next: %w", err)
}
}
{
dst := &retval.Related
src := v.Related
*dst = make(
[]json.RawMessage,
len(src))
for i, src := range src {
dst := &(*dst)[i]
var err error
*dst, err = __marshalCovariantInterfaceImplementationRandomItemContentRelatedContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal CovariantInterfaceImplementationRandomItemTopic.Related: %w", err)
}
}
}
return &retval, nil
}
// CovariantInterfaceImplementationRandomItemVideo includes the requested fields of the GraphQL type Video.
type CovariantInterfaceImplementationRandomItemVideo struct {
Typename string `json:"__typename"`
// ID is the identifier of the content.
Id testutil.ID `json:"id"`
Next CovariantInterfaceImplementationRandomItemContentNextContent `json:"-"`
Related []CovariantInterfaceImplementationRandomItemContentRelatedContent `json:"-"`
}
// GetTypename returns CovariantInterfaceImplementationRandomItemVideo.Typename, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemVideo) GetTypename() string { return v.Typename }
// GetId returns CovariantInterfaceImplementationRandomItemVideo.Id, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemVideo) GetId() testutil.ID { return v.Id }
// GetNext returns CovariantInterfaceImplementationRandomItemVideo.Next, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemVideo) GetNext() CovariantInterfaceImplementationRandomItemContentNextContent {
return v.Next
}
// GetRelated returns CovariantInterfaceImplementationRandomItemVideo.Related, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRandomItemVideo) GetRelated() []CovariantInterfaceImplementationRandomItemContentRelatedContent {
return v.Related
}
func (v *CovariantInterfaceImplementationRandomItemVideo) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*CovariantInterfaceImplementationRandomItemVideo
Next json.RawMessage `json:"next"`
Related []json.RawMessage `json:"related"`
graphql.NoUnmarshalJSON
}
firstPass.CovariantInterfaceImplementationRandomItemVideo = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
{
dst := &v.Next
src := firstPass.Next
if len(src) != 0 && string(src) != "null" {
err = __unmarshalCovariantInterfaceImplementationRandomItemContentNextContent(
src, dst)
if err != nil {
return fmt.Errorf(
"unable to unmarshal CovariantInterfaceImplementationRandomItemVideo.Next: %w", err)
}
}
}
{
dst := &v.Related
src := firstPass.Related
*dst = make(
[]CovariantInterfaceImplementationRandomItemContentRelatedContent,
len(src))
for i, src := range src {
dst := &(*dst)[i]
if len(src) != 0 && string(src) != "null" {
err = __unmarshalCovariantInterfaceImplementationRandomItemContentRelatedContent(
src, dst)
if err != nil {
return fmt.Errorf(
"unable to unmarshal CovariantInterfaceImplementationRandomItemVideo.Related: %w", err)
}
}
}
}
return nil
}
type __premarshalCovariantInterfaceImplementationRandomItemVideo struct {
Typename string `json:"__typename"`
Id testutil.ID `json:"id"`
Next json.RawMessage `json:"next"`
Related []json.RawMessage `json:"related"`
}
func (v *CovariantInterfaceImplementationRandomItemVideo) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *CovariantInterfaceImplementationRandomItemVideo) __premarshalJSON() (*__premarshalCovariantInterfaceImplementationRandomItemVideo, error) {
var retval __premarshalCovariantInterfaceImplementationRandomItemVideo
retval.Typename = v.Typename
retval.Id = v.Id
{
dst := &retval.Next
src := v.Next
var err error
*dst, err = __marshalCovariantInterfaceImplementationRandomItemContentNextContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal CovariantInterfaceImplementationRandomItemVideo.Next: %w", err)
}
}
{
dst := &retval.Related
src := v.Related
*dst = make(
[]json.RawMessage,
len(src))
for i, src := range src {
dst := &(*dst)[i]
var err error
*dst, err = __marshalCovariantInterfaceImplementationRandomItemContentRelatedContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal CovariantInterfaceImplementationRandomItemVideo.Related: %w", err)
}
}
}
return &retval, nil
}
// CovariantInterfaceImplementationResponse is returned by CovariantInterfaceImplementation on success.
type CovariantInterfaceImplementationResponse struct {
RandomItem CovariantInterfaceImplementationRandomItemContent `json:"-"`
Root CovariantInterfaceImplementationRootTopic `json:"root"`
}
// GetRandomItem returns CovariantInterfaceImplementationResponse.RandomItem, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationResponse) GetRandomItem() CovariantInterfaceImplementationRandomItemContent {
return v.RandomItem
}
// GetRoot returns CovariantInterfaceImplementationResponse.Root, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationResponse) GetRoot() CovariantInterfaceImplementationRootTopic {
return v.Root
}
func (v *CovariantInterfaceImplementationResponse) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*CovariantInterfaceImplementationResponse
RandomItem json.RawMessage `json:"randomItem"`
graphql.NoUnmarshalJSON
}
firstPass.CovariantInterfaceImplementationResponse = 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 = __unmarshalCovariantInterfaceImplementationRandomItemContent(
src, dst)
if err != nil {
return fmt.Errorf(
"unable to unmarshal CovariantInterfaceImplementationResponse.RandomItem: %w", err)
}
}
}
return nil
}
type __premarshalCovariantInterfaceImplementationResponse struct {
RandomItem json.RawMessage `json:"randomItem"`
Root CovariantInterfaceImplementationRootTopic `json:"root"`
}
func (v *CovariantInterfaceImplementationResponse) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *CovariantInterfaceImplementationResponse) __premarshalJSON() (*__premarshalCovariantInterfaceImplementationResponse, error) {
var retval __premarshalCovariantInterfaceImplementationResponse
{
dst := &retval.RandomItem
src := v.RandomItem
var err error
*dst, err = __marshalCovariantInterfaceImplementationRandomItemContent(
&src)
if err != nil {
return nil, fmt.Errorf(
"unable to marshal CovariantInterfaceImplementationResponse.RandomItem: %w", err)
}
}
retval.Root = v.Root
return &retval, nil
}
// CovariantInterfaceImplementationRootTopic includes the requested fields of the GraphQL type Topic.
type CovariantInterfaceImplementationRootTopic struct {
ContentFieldsTopic `json:"-"`
TopicFields `json:"-"`
Next CovariantInterfaceImplementationRootTopicNextTopic `json:"next"`
Related []CovariantInterfaceImplementationRootTopicRelatedTopic `json:"related"`
}
// GetNext returns CovariantInterfaceImplementationRootTopic.Next, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRootTopic) GetNext() CovariantInterfaceImplementationRootTopicNextTopic {
return v.Next
}
// GetRelated returns CovariantInterfaceImplementationRootTopic.Related, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRootTopic) GetRelated() []CovariantInterfaceImplementationRootTopicRelatedTopic {
return v.Related
}
func (v *CovariantInterfaceImplementationRootTopic) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*CovariantInterfaceImplementationRootTopic
graphql.NoUnmarshalJSON
}
firstPass.CovariantInterfaceImplementationRootTopic = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.ContentFieldsTopic)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.TopicFields)
if err != nil {
return err
}
return nil
}
type __premarshalCovariantInterfaceImplementationRootTopic struct {
Next CovariantInterfaceImplementationRootTopicNextTopic `json:"next"`
Related []CovariantInterfaceImplementationRootTopicRelatedTopic `json:"related"`
}
func (v *CovariantInterfaceImplementationRootTopic) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *CovariantInterfaceImplementationRootTopic) __premarshalJSON() (*__premarshalCovariantInterfaceImplementationRootTopic, error) {
var retval __premarshalCovariantInterfaceImplementationRootTopic
retval.Next = v.Next
retval.Related = v.Related
return &retval, nil
}
// CovariantInterfaceImplementationRootTopicNextTopic includes the requested fields of the GraphQL type Topic.
type CovariantInterfaceImplementationRootTopicNextTopic struct {
TopicFields `json:"-"`
}
// GetNext returns CovariantInterfaceImplementationRootTopicNextTopic.Next, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRootTopicNextTopic) GetNext() TopicFieldsNextTopic {
return v.TopicFields.Next
}
// GetRelated returns CovariantInterfaceImplementationRootTopicNextTopic.Related, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRootTopicNextTopic) GetRelated() []TopicFieldsRelatedTopic {
return v.TopicFields.Related
}
func (v *CovariantInterfaceImplementationRootTopicNextTopic) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*CovariantInterfaceImplementationRootTopicNextTopic
graphql.NoUnmarshalJSON
}
firstPass.CovariantInterfaceImplementationRootTopicNextTopic = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.TopicFields)
if err != nil {
return err
}
return nil
}
type __premarshalCovariantInterfaceImplementationRootTopicNextTopic struct {
Next TopicFieldsNextTopic `json:"next"`
Related []TopicFieldsRelatedTopic `json:"related"`
}
func (v *CovariantInterfaceImplementationRootTopicNextTopic) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *CovariantInterfaceImplementationRootTopicNextTopic) __premarshalJSON() (*__premarshalCovariantInterfaceImplementationRootTopicNextTopic, error) {
var retval __premarshalCovariantInterfaceImplementationRootTopicNextTopic
retval.Next = v.TopicFields.Next
retval.Related = v.TopicFields.Related
return &retval, nil
}
// CovariantInterfaceImplementationRootTopicRelatedTopic includes the requested fields of the GraphQL type Topic.
type CovariantInterfaceImplementationRootTopicRelatedTopic struct {
TopicFields `json:"-"`
}
// GetNext returns CovariantInterfaceImplementationRootTopicRelatedTopic.Next, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRootTopicRelatedTopic) GetNext() TopicFieldsNextTopic {
return v.TopicFields.Next
}
// GetRelated returns CovariantInterfaceImplementationRootTopicRelatedTopic.Related, and is useful for accessing the field via an interface.
func (v *CovariantInterfaceImplementationRootTopicRelatedTopic) GetRelated() []TopicFieldsRelatedTopic {
return v.TopicFields.Related
}
func (v *CovariantInterfaceImplementationRootTopicRelatedTopic) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
var firstPass struct {
*CovariantInterfaceImplementationRootTopicRelatedTopic
graphql.NoUnmarshalJSON
}
firstPass.CovariantInterfaceImplementationRootTopicRelatedTopic = v
err := json.Unmarshal(b, &firstPass)
if err != nil {
return err
}
err = json.Unmarshal(
b, &v.TopicFields)
if err != nil {
return err
}
return nil
}
type __premarshalCovariantInterfaceImplementationRootTopicRelatedTopic struct {
Next TopicFieldsNextTopic `json:"next"`
Related []TopicFieldsRelatedTopic `json:"related"`
}
func (v *CovariantInterfaceImplementationRootTopicRelatedTopic) MarshalJSON() ([]byte, error) {
premarshaled, err := v.__premarshalJSON()
if err != nil {
return nil, err
}
return json.Marshal(premarshaled)
}
func (v *CovariantInterfaceImplementationRootTopicRelatedTopic) __premarshalJSON() (*__premarshalCovariantInterfaceImplementationRootTopicRelatedTopic, error) {
var retval __premarshalCovariantInterfaceImplementationRootTopicRelatedTopic
retval.Next = v.TopicFields.Next
retval.Related = v.TopicFields.Related
return &retval, nil
}
// TopicFields includes the GraphQL fields of Topic requested by the fragment TopicFields.
type TopicFields struct {
Next TopicFieldsNextTopic `json:"next"`
Related []TopicFieldsRelatedTopic `json:"related"`
}
// GetNext returns TopicFields.Next, and is useful for accessing the field via an interface.
func (v *TopicFields) GetNext() TopicFieldsNextTopic { return v.Next }
// GetRelated returns TopicFields.Related, and is useful for accessing the field via an interface.
func (v *TopicFields) GetRelated() []TopicFieldsRelatedTopic { return v.Related }
// TopicFieldsNextTopic includes the requested fields of the GraphQL type Topic.
type TopicFieldsNextTopic struct {
// ID is documented in the Content interface.
Id testutil.ID `json:"id"`
}
// GetId returns TopicFieldsNextTopic.Id, and is useful for accessing the field via an interface.
func (v *TopicFieldsNextTopic) GetId() testutil.ID { return v.Id }
// TopicFieldsRelatedTopic includes the requested fields of the GraphQL type Topic.
type TopicFieldsRelatedTopic struct {
// ID is documented in the Content interface.
Id testutil.ID `json:"id"`
}
// GetId returns TopicFieldsRelatedTopic.Id, and is useful for accessing the field via an interface.
func (v *TopicFieldsRelatedTopic) GetId() testutil.ID { return v.Id }
// The query or mutation executed by CovariantInterfaceImplementation.
const CovariantInterfaceImplementationOperation = `
query CovariantInterfaceImplementation {
randomItem {
__typename
id
next {
__typename
... ContentFields
}
related {
__typename
... ContentFields
}
}
root {
... ContentFields
... TopicFields
next {
... TopicFields
}
related {
... TopicFields
}
}
}
fragment ContentFields on Content {
next {
__typename
id
}
related {
__typename
id
}
}
fragment TopicFields on Topic {
next {
id
}
related {
id
}
}
`
func CovariantInterfaceImplementation(
client graphql.Client,
) (*CovariantInterfaceImplementationResponse, error) {
req := &graphql.Request{
OpName: "CovariantInterfaceImplementation",
Query: CovariantInterfaceImplementationOperation,
}
var err error
var data CovariantInterfaceImplementationResponse
resp := &graphql.Response{Data: &data}
err = client.MakeRequest(
nil,
req,
resp,
)
return &data, err
}