github.com/Desuuuu/genqlient@v0.5.3/generate/testdata/snapshots/TestGenerate-ComplexNamedFragments.graphql-ComplexNamedFragments.graphql.go (about)

     1  // Code generated by github.com/Desuuuu/genqlient, DO NOT EDIT.
     2  
     3  package test
     4  
     5  import (
     6  	"encoding/json"
     7  	"fmt"
     8  
     9  	"github.com/Desuuuu/genqlient/graphql"
    10  	"github.com/Desuuuu/genqlient/internal/testutil"
    11  )
    12  
    13  // ComplexNamedFragmentsResponse is returned by ComplexNamedFragments on success.
    14  type ComplexNamedFragmentsResponse struct {
    15  	QueryFragment `json:"-"`
    16  }
    17  
    18  // GetRandomItem returns ComplexNamedFragmentsResponse.RandomItem, and is useful for accessing the field via an interface.
    19  func (v *ComplexNamedFragmentsResponse) GetRandomItem() InnerQueryFragmentRandomItemContent {
    20  	return v.QueryFragment.InnerQueryFragment.RandomItem
    21  }
    22  
    23  // GetRandomLeaf returns ComplexNamedFragmentsResponse.RandomLeaf, and is useful for accessing the field via an interface.
    24  func (v *ComplexNamedFragmentsResponse) GetRandomLeaf() InnerQueryFragmentRandomLeafLeafContent {
    25  	return v.QueryFragment.InnerQueryFragment.RandomLeaf
    26  }
    27  
    28  // GetOtherLeaf returns ComplexNamedFragmentsResponse.OtherLeaf, and is useful for accessing the field via an interface.
    29  func (v *ComplexNamedFragmentsResponse) GetOtherLeaf() InnerQueryFragmentOtherLeafLeafContent {
    30  	return v.QueryFragment.InnerQueryFragment.OtherLeaf
    31  }
    32  
    33  func (v *ComplexNamedFragmentsResponse) UnmarshalJSON(b []byte) error {
    34  
    35  	if string(b) == "null" {
    36  		return nil
    37  	}
    38  
    39  	var firstPass struct {
    40  		*ComplexNamedFragmentsResponse
    41  		graphql.NoUnmarshalJSON
    42  	}
    43  	firstPass.ComplexNamedFragmentsResponse = v
    44  
    45  	err := json.Unmarshal(b, &firstPass)
    46  	if err != nil {
    47  		return err
    48  	}
    49  
    50  	err = json.Unmarshal(
    51  		b, &v.QueryFragment)
    52  	if err != nil {
    53  		return err
    54  	}
    55  	return nil
    56  }
    57  
    58  type __premarshalComplexNamedFragmentsResponse struct {
    59  	RandomItem json.RawMessage `json:"randomItem"`
    60  
    61  	RandomLeaf json.RawMessage `json:"randomLeaf"`
    62  
    63  	OtherLeaf json.RawMessage `json:"otherLeaf"`
    64  }
    65  
    66  func (v *ComplexNamedFragmentsResponse) MarshalJSON() ([]byte, error) {
    67  	premarshaled, err := v.__premarshalJSON()
    68  	if err != nil {
    69  		return nil, err
    70  	}
    71  	return json.Marshal(premarshaled)
    72  }
    73  
    74  func (v *ComplexNamedFragmentsResponse) __premarshalJSON() (*__premarshalComplexNamedFragmentsResponse, error) {
    75  	var retval __premarshalComplexNamedFragmentsResponse
    76  
    77  	{
    78  
    79  		dst := &retval.RandomItem
    80  		src := v.QueryFragment.InnerQueryFragment.RandomItem
    81  		var err error
    82  		*dst, err = __marshalInnerQueryFragmentRandomItemContent(
    83  			&src)
    84  		if err != nil {
    85  			return nil, fmt.Errorf(
    86  				"Unable to marshal ComplexNamedFragmentsResponse.QueryFragment.InnerQueryFragment.RandomItem: %w", err)
    87  		}
    88  	}
    89  	{
    90  
    91  		dst := &retval.RandomLeaf
    92  		src := v.QueryFragment.InnerQueryFragment.RandomLeaf
    93  		var err error
    94  		*dst, err = __marshalInnerQueryFragmentRandomLeafLeafContent(
    95  			&src)
    96  		if err != nil {
    97  			return nil, fmt.Errorf(
    98  				"Unable to marshal ComplexNamedFragmentsResponse.QueryFragment.InnerQueryFragment.RandomLeaf: %w", err)
    99  		}
   100  	}
   101  	{
   102  
   103  		dst := &retval.OtherLeaf
   104  		src := v.QueryFragment.InnerQueryFragment.OtherLeaf
   105  		var err error
   106  		*dst, err = __marshalInnerQueryFragmentOtherLeafLeafContent(
   107  			&src)
   108  		if err != nil {
   109  			return nil, fmt.Errorf(
   110  				"Unable to marshal ComplexNamedFragmentsResponse.QueryFragment.InnerQueryFragment.OtherLeaf: %w", err)
   111  		}
   112  	}
   113  	return &retval, nil
   114  }
   115  
   116  // ContentFields includes the GraphQL fields of Content requested by the fragment ContentFields.
   117  // The GraphQL type's documentation follows.
   118  //
   119  // Content is implemented by various types like Article, Video, and Topic.
   120  //
   121  // ContentFields is implemented by the following types:
   122  // ContentFieldsArticle
   123  // ContentFieldsVideo
   124  // ContentFieldsTopic
   125  type ContentFields interface {
   126  	implementsGraphQLInterfaceContentFields()
   127  	// GetName returns the interface-field "name" from its implementation.
   128  	GetName() string
   129  	// GetUrl returns the interface-field "url" from its implementation.
   130  	GetUrl() string
   131  	GetContentFieldsArticle() (*ContentFieldsArticle, bool)
   132  	GetContentFieldsVideo() (*ContentFieldsVideo, bool)
   133  	GetContentFieldsTopic() (*ContentFieldsTopic, bool)
   134  }
   135  
   136  func (v *ContentFieldsArticle) implementsGraphQLInterfaceContentFields() {}
   137  func (v *ContentFieldsArticle) GetContentFieldsArticle() (*ContentFieldsArticle, bool) {
   138  	return v, true
   139  }
   140  func (v *ContentFieldsArticle) GetContentFieldsVideo() (*ContentFieldsVideo, bool) {
   141  	return nil, false
   142  }
   143  func (v *ContentFieldsArticle) GetContentFieldsTopic() (*ContentFieldsTopic, bool) {
   144  	return nil, false
   145  }
   146  func (v *ContentFieldsVideo) implementsGraphQLInterfaceContentFields() {}
   147  func (v *ContentFieldsVideo) GetContentFieldsArticle() (*ContentFieldsArticle, bool) {
   148  	return nil, false
   149  }
   150  func (v *ContentFieldsVideo) GetContentFieldsVideo() (*ContentFieldsVideo, bool) {
   151  	return v, true
   152  }
   153  func (v *ContentFieldsVideo) GetContentFieldsTopic() (*ContentFieldsTopic, bool) {
   154  	return nil, false
   155  }
   156  func (v *ContentFieldsTopic) implementsGraphQLInterfaceContentFields() {}
   157  func (v *ContentFieldsTopic) GetContentFieldsArticle() (*ContentFieldsArticle, bool) {
   158  	return nil, false
   159  }
   160  func (v *ContentFieldsTopic) GetContentFieldsVideo() (*ContentFieldsVideo, bool) {
   161  	return nil, false
   162  }
   163  func (v *ContentFieldsTopic) GetContentFieldsTopic() (*ContentFieldsTopic, bool) {
   164  	return v, true
   165  }
   166  
   167  func __unmarshalContentFields(b []byte, v *ContentFields) error {
   168  	if string(b) == "null" {
   169  		return nil
   170  	}
   171  
   172  	var tn struct {
   173  		TypeName string `json:"__typename"`
   174  	}
   175  	err := json.Unmarshal(b, &tn)
   176  	if err != nil {
   177  		return err
   178  	}
   179  
   180  	switch tn.TypeName {
   181  	case "Article":
   182  		*v = new(ContentFieldsArticle)
   183  		return json.Unmarshal(b, *v)
   184  	case "Video":
   185  		*v = new(ContentFieldsVideo)
   186  		return json.Unmarshal(b, *v)
   187  	case "Topic":
   188  		*v = new(ContentFieldsTopic)
   189  		return json.Unmarshal(b, *v)
   190  	case "":
   191  		return fmt.Errorf(
   192  			"response was missing Content.__typename")
   193  	default:
   194  		return fmt.Errorf(
   195  			`unexpected concrete type for ContentFields: "%v"`, tn.TypeName)
   196  	}
   197  }
   198  
   199  func __marshalContentFields(v *ContentFields) ([]byte, error) {
   200  
   201  	var typename string
   202  	switch v := (*v).(type) {
   203  	case *ContentFieldsArticle:
   204  		typename = "Article"
   205  
   206  		result := struct {
   207  			TypeName string `json:"__typename"`
   208  			*ContentFieldsArticle
   209  		}{typename, v}
   210  		return json.Marshal(result)
   211  	case *ContentFieldsVideo:
   212  		typename = "Video"
   213  
   214  		result := struct {
   215  			TypeName string `json:"__typename"`
   216  			*ContentFieldsVideo
   217  		}{typename, v}
   218  		return json.Marshal(result)
   219  	case *ContentFieldsTopic:
   220  		typename = "Topic"
   221  
   222  		result := struct {
   223  			TypeName string `json:"__typename"`
   224  			*ContentFieldsTopic
   225  		}{typename, v}
   226  		return json.Marshal(result)
   227  	case nil:
   228  		return []byte("null"), nil
   229  	default:
   230  		return nil, fmt.Errorf(
   231  			`unexpected concrete type for ContentFields: "%T"`, v)
   232  	}
   233  }
   234  
   235  // ContentFields includes the GraphQL fields of Article requested by the fragment ContentFields.
   236  // The GraphQL type's documentation follows.
   237  //
   238  // Content is implemented by various types like Article, Video, and Topic.
   239  type ContentFieldsArticle struct {
   240  	Name string `json:"name"`
   241  	Url  string `json:"url"`
   242  }
   243  
   244  // GetName returns ContentFieldsArticle.Name, and is useful for accessing the field via an interface.
   245  func (v *ContentFieldsArticle) GetName() string { return v.Name }
   246  
   247  // GetUrl returns ContentFieldsArticle.Url, and is useful for accessing the field via an interface.
   248  func (v *ContentFieldsArticle) GetUrl() string { return v.Url }
   249  
   250  // ContentFields includes the GraphQL fields of Topic requested by the fragment ContentFields.
   251  // The GraphQL type's documentation follows.
   252  //
   253  // Content is implemented by various types like Article, Video, and Topic.
   254  type ContentFieldsTopic struct {
   255  	Name string `json:"name"`
   256  	Url  string `json:"url"`
   257  }
   258  
   259  // GetName returns ContentFieldsTopic.Name, and is useful for accessing the field via an interface.
   260  func (v *ContentFieldsTopic) GetName() string { return v.Name }
   261  
   262  // GetUrl returns ContentFieldsTopic.Url, and is useful for accessing the field via an interface.
   263  func (v *ContentFieldsTopic) GetUrl() string { return v.Url }
   264  
   265  // ContentFields includes the GraphQL fields of Video requested by the fragment ContentFields.
   266  // The GraphQL type's documentation follows.
   267  //
   268  // Content is implemented by various types like Article, Video, and Topic.
   269  type ContentFieldsVideo struct {
   270  	Name string `json:"name"`
   271  	Url  string `json:"url"`
   272  }
   273  
   274  // GetName returns ContentFieldsVideo.Name, and is useful for accessing the field via an interface.
   275  func (v *ContentFieldsVideo) GetName() string { return v.Name }
   276  
   277  // GetUrl returns ContentFieldsVideo.Url, and is useful for accessing the field via an interface.
   278  func (v *ContentFieldsVideo) GetUrl() string { return v.Url }
   279  
   280  // InnerQueryFragment includes the GraphQL fields of Query requested by the fragment InnerQueryFragment.
   281  // The GraphQL type's documentation follows.
   282  //
   283  // Query's description is probably ignored by almost all callers.
   284  type InnerQueryFragment struct {
   285  	RandomItem InnerQueryFragmentRandomItemContent     `json:"-"`
   286  	RandomLeaf InnerQueryFragmentRandomLeafLeafContent `json:"-"`
   287  	OtherLeaf  InnerQueryFragmentOtherLeafLeafContent  `json:"-"`
   288  }
   289  
   290  // GetRandomItem returns InnerQueryFragment.RandomItem, and is useful for accessing the field via an interface.
   291  func (v *InnerQueryFragment) GetRandomItem() InnerQueryFragmentRandomItemContent { return v.RandomItem }
   292  
   293  // GetRandomLeaf returns InnerQueryFragment.RandomLeaf, and is useful for accessing the field via an interface.
   294  func (v *InnerQueryFragment) GetRandomLeaf() InnerQueryFragmentRandomLeafLeafContent {
   295  	return v.RandomLeaf
   296  }
   297  
   298  // GetOtherLeaf returns InnerQueryFragment.OtherLeaf, and is useful for accessing the field via an interface.
   299  func (v *InnerQueryFragment) GetOtherLeaf() InnerQueryFragmentOtherLeafLeafContent {
   300  	return v.OtherLeaf
   301  }
   302  
   303  func (v *InnerQueryFragment) UnmarshalJSON(b []byte) error {
   304  
   305  	if string(b) == "null" {
   306  		return nil
   307  	}
   308  
   309  	var firstPass struct {
   310  		*InnerQueryFragment
   311  		RandomItem json.RawMessage `json:"randomItem"`
   312  		RandomLeaf json.RawMessage `json:"randomLeaf"`
   313  		OtherLeaf  json.RawMessage `json:"otherLeaf"`
   314  		graphql.NoUnmarshalJSON
   315  	}
   316  	firstPass.InnerQueryFragment = v
   317  
   318  	err := json.Unmarshal(b, &firstPass)
   319  	if err != nil {
   320  		return err
   321  	}
   322  
   323  	{
   324  		dst := &v.RandomItem
   325  		src := firstPass.RandomItem
   326  		if len(src) != 0 && string(src) != "null" {
   327  			err = __unmarshalInnerQueryFragmentRandomItemContent(
   328  				src, dst)
   329  			if err != nil {
   330  				return fmt.Errorf(
   331  					"Unable to unmarshal InnerQueryFragment.RandomItem: %w", err)
   332  			}
   333  		}
   334  	}
   335  
   336  	{
   337  		dst := &v.RandomLeaf
   338  		src := firstPass.RandomLeaf
   339  		if len(src) != 0 && string(src) != "null" {
   340  			err = __unmarshalInnerQueryFragmentRandomLeafLeafContent(
   341  				src, dst)
   342  			if err != nil {
   343  				return fmt.Errorf(
   344  					"Unable to unmarshal InnerQueryFragment.RandomLeaf: %w", err)
   345  			}
   346  		}
   347  	}
   348  
   349  	{
   350  		dst := &v.OtherLeaf
   351  		src := firstPass.OtherLeaf
   352  		if len(src) != 0 && string(src) != "null" {
   353  			err = __unmarshalInnerQueryFragmentOtherLeafLeafContent(
   354  				src, dst)
   355  			if err != nil {
   356  				return fmt.Errorf(
   357  					"Unable to unmarshal InnerQueryFragment.OtherLeaf: %w", err)
   358  			}
   359  		}
   360  	}
   361  	return nil
   362  }
   363  
   364  type __premarshalInnerQueryFragment struct {
   365  	RandomItem json.RawMessage `json:"randomItem"`
   366  
   367  	RandomLeaf json.RawMessage `json:"randomLeaf"`
   368  
   369  	OtherLeaf json.RawMessage `json:"otherLeaf"`
   370  }
   371  
   372  func (v *InnerQueryFragment) MarshalJSON() ([]byte, error) {
   373  	premarshaled, err := v.__premarshalJSON()
   374  	if err != nil {
   375  		return nil, err
   376  	}
   377  	return json.Marshal(premarshaled)
   378  }
   379  
   380  func (v *InnerQueryFragment) __premarshalJSON() (*__premarshalInnerQueryFragment, error) {
   381  	var retval __premarshalInnerQueryFragment
   382  
   383  	{
   384  
   385  		dst := &retval.RandomItem
   386  		src := v.RandomItem
   387  		var err error
   388  		*dst, err = __marshalInnerQueryFragmentRandomItemContent(
   389  			&src)
   390  		if err != nil {
   391  			return nil, fmt.Errorf(
   392  				"Unable to marshal InnerQueryFragment.RandomItem: %w", err)
   393  		}
   394  	}
   395  	{
   396  
   397  		dst := &retval.RandomLeaf
   398  		src := v.RandomLeaf
   399  		var err error
   400  		*dst, err = __marshalInnerQueryFragmentRandomLeafLeafContent(
   401  			&src)
   402  		if err != nil {
   403  			return nil, fmt.Errorf(
   404  				"Unable to marshal InnerQueryFragment.RandomLeaf: %w", err)
   405  		}
   406  	}
   407  	{
   408  
   409  		dst := &retval.OtherLeaf
   410  		src := v.OtherLeaf
   411  		var err error
   412  		*dst, err = __marshalInnerQueryFragmentOtherLeafLeafContent(
   413  			&src)
   414  		if err != nil {
   415  			return nil, fmt.Errorf(
   416  				"Unable to marshal InnerQueryFragment.OtherLeaf: %w", err)
   417  		}
   418  	}
   419  	return &retval, nil
   420  }
   421  
   422  // InnerQueryFragmentOtherLeafArticle includes the requested fields of the GraphQL type Article.
   423  type InnerQueryFragmentOtherLeafArticle struct {
   424  	Typename             string `json:"__typename"`
   425  	ContentFieldsArticle `json:"-"`
   426  }
   427  
   428  // GetTypename returns InnerQueryFragmentOtherLeafArticle.Typename, and is useful for accessing the field via an interface.
   429  func (v *InnerQueryFragmentOtherLeafArticle) GetTypename() string { return v.Typename }
   430  
   431  // GetName returns InnerQueryFragmentOtherLeafArticle.Name, and is useful for accessing the field via an interface.
   432  func (v *InnerQueryFragmentOtherLeafArticle) GetName() string { return v.ContentFieldsArticle.Name }
   433  
   434  // GetUrl returns InnerQueryFragmentOtherLeafArticle.Url, and is useful for accessing the field via an interface.
   435  func (v *InnerQueryFragmentOtherLeafArticle) GetUrl() string { return v.ContentFieldsArticle.Url }
   436  
   437  func (v *InnerQueryFragmentOtherLeafArticle) UnmarshalJSON(b []byte) error {
   438  
   439  	if string(b) == "null" {
   440  		return nil
   441  	}
   442  
   443  	var firstPass struct {
   444  		*InnerQueryFragmentOtherLeafArticle
   445  		graphql.NoUnmarshalJSON
   446  	}
   447  	firstPass.InnerQueryFragmentOtherLeafArticle = v
   448  
   449  	err := json.Unmarshal(b, &firstPass)
   450  	if err != nil {
   451  		return err
   452  	}
   453  
   454  	err = json.Unmarshal(
   455  		b, &v.ContentFieldsArticle)
   456  	if err != nil {
   457  		return err
   458  	}
   459  	return nil
   460  }
   461  
   462  type __premarshalInnerQueryFragmentOtherLeafArticle struct {
   463  	Typename string `json:"__typename"`
   464  
   465  	Name string `json:"name"`
   466  
   467  	Url string `json:"url"`
   468  }
   469  
   470  func (v *InnerQueryFragmentOtherLeafArticle) MarshalJSON() ([]byte, error) {
   471  	premarshaled, err := v.__premarshalJSON()
   472  	if err != nil {
   473  		return nil, err
   474  	}
   475  	return json.Marshal(premarshaled)
   476  }
   477  
   478  func (v *InnerQueryFragmentOtherLeafArticle) __premarshalJSON() (*__premarshalInnerQueryFragmentOtherLeafArticle, error) {
   479  	var retval __premarshalInnerQueryFragmentOtherLeafArticle
   480  
   481  	retval.Typename = v.Typename
   482  	retval.Name = v.ContentFieldsArticle.Name
   483  	retval.Url = v.ContentFieldsArticle.Url
   484  	return &retval, nil
   485  }
   486  
   487  // InnerQueryFragmentOtherLeafLeafContent includes the requested fields of the GraphQL interface LeafContent.
   488  //
   489  // InnerQueryFragmentOtherLeafLeafContent is implemented by the following types:
   490  // InnerQueryFragmentOtherLeafArticle
   491  // InnerQueryFragmentOtherLeafVideo
   492  // The GraphQL type's documentation follows.
   493  //
   494  // LeafContent represents content items that can't have child-nodes.
   495  type InnerQueryFragmentOtherLeafLeafContent interface {
   496  	implementsGraphQLInterfaceInnerQueryFragmentOtherLeafLeafContent()
   497  	// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
   498  	GetTypename() string
   499  	GetLeafContentArticle() (*InnerQueryFragmentOtherLeafArticle, bool)
   500  	GetLeafContentVideo() (*InnerQueryFragmentOtherLeafVideo, bool)
   501  }
   502  
   503  func (v *InnerQueryFragmentOtherLeafArticle) implementsGraphQLInterfaceInnerQueryFragmentOtherLeafLeafContent() {
   504  }
   505  func (v *InnerQueryFragmentOtherLeafArticle) GetLeafContentArticle() (*InnerQueryFragmentOtherLeafArticle, bool) {
   506  	return v, true
   507  }
   508  func (v *InnerQueryFragmentOtherLeafArticle) GetLeafContentVideo() (*InnerQueryFragmentOtherLeafVideo, bool) {
   509  	return nil, false
   510  }
   511  func (v *InnerQueryFragmentOtherLeafVideo) implementsGraphQLInterfaceInnerQueryFragmentOtherLeafLeafContent() {
   512  }
   513  func (v *InnerQueryFragmentOtherLeafVideo) GetLeafContentArticle() (*InnerQueryFragmentOtherLeafArticle, bool) {
   514  	return nil, false
   515  }
   516  func (v *InnerQueryFragmentOtherLeafVideo) GetLeafContentVideo() (*InnerQueryFragmentOtherLeafVideo, bool) {
   517  	return v, true
   518  }
   519  
   520  func __unmarshalInnerQueryFragmentOtherLeafLeafContent(b []byte, v *InnerQueryFragmentOtherLeafLeafContent) error {
   521  	if string(b) == "null" {
   522  		return nil
   523  	}
   524  
   525  	var tn struct {
   526  		TypeName string `json:"__typename"`
   527  	}
   528  	err := json.Unmarshal(b, &tn)
   529  	if err != nil {
   530  		return err
   531  	}
   532  
   533  	switch tn.TypeName {
   534  	case "Article":
   535  		*v = new(InnerQueryFragmentOtherLeafArticle)
   536  		return json.Unmarshal(b, *v)
   537  	case "Video":
   538  		*v = new(InnerQueryFragmentOtherLeafVideo)
   539  		return json.Unmarshal(b, *v)
   540  	case "":
   541  		return fmt.Errorf(
   542  			"response was missing LeafContent.__typename")
   543  	default:
   544  		return fmt.Errorf(
   545  			`unexpected concrete type for InnerQueryFragmentOtherLeafLeafContent: "%v"`, tn.TypeName)
   546  	}
   547  }
   548  
   549  func __marshalInnerQueryFragmentOtherLeafLeafContent(v *InnerQueryFragmentOtherLeafLeafContent) ([]byte, error) {
   550  
   551  	var typename string
   552  	switch v := (*v).(type) {
   553  	case *InnerQueryFragmentOtherLeafArticle:
   554  		typename = "Article"
   555  
   556  		premarshaled, err := v.__premarshalJSON()
   557  		if err != nil {
   558  			return nil, err
   559  		}
   560  		result := struct {
   561  			TypeName string `json:"__typename"`
   562  			*__premarshalInnerQueryFragmentOtherLeafArticle
   563  		}{typename, premarshaled}
   564  		return json.Marshal(result)
   565  	case *InnerQueryFragmentOtherLeafVideo:
   566  		typename = "Video"
   567  
   568  		premarshaled, err := v.__premarshalJSON()
   569  		if err != nil {
   570  			return nil, err
   571  		}
   572  		result := struct {
   573  			TypeName string `json:"__typename"`
   574  			*__premarshalInnerQueryFragmentOtherLeafVideo
   575  		}{typename, premarshaled}
   576  		return json.Marshal(result)
   577  	case nil:
   578  		return []byte("null"), nil
   579  	default:
   580  		return nil, fmt.Errorf(
   581  			`unexpected concrete type for InnerQueryFragmentOtherLeafLeafContent: "%T"`, v)
   582  	}
   583  }
   584  
   585  // InnerQueryFragmentOtherLeafVideo includes the requested fields of the GraphQL type Video.
   586  type InnerQueryFragmentOtherLeafVideo struct {
   587  	Typename           string `json:"__typename"`
   588  	MoreVideoFields    `json:"-"`
   589  	ContentFieldsVideo `json:"-"`
   590  }
   591  
   592  // GetTypename returns InnerQueryFragmentOtherLeafVideo.Typename, and is useful for accessing the field via an interface.
   593  func (v *InnerQueryFragmentOtherLeafVideo) GetTypename() string { return v.Typename }
   594  
   595  // GetId returns InnerQueryFragmentOtherLeafVideo.Id, and is useful for accessing the field via an interface.
   596  func (v *InnerQueryFragmentOtherLeafVideo) GetId() *testutil.ID { return v.MoreVideoFields.Id }
   597  
   598  // GetParent returns InnerQueryFragmentOtherLeafVideo.Parent, and is useful for accessing the field via an interface.
   599  func (v *InnerQueryFragmentOtherLeafVideo) GetParent() *MoreVideoFieldsParentTopic {
   600  	return v.MoreVideoFields.Parent
   601  }
   602  
   603  // GetName returns InnerQueryFragmentOtherLeafVideo.Name, and is useful for accessing the field via an interface.
   604  func (v *InnerQueryFragmentOtherLeafVideo) GetName() string { return v.ContentFieldsVideo.Name }
   605  
   606  // GetUrl returns InnerQueryFragmentOtherLeafVideo.Url, and is useful for accessing the field via an interface.
   607  func (v *InnerQueryFragmentOtherLeafVideo) GetUrl() string { return v.ContentFieldsVideo.Url }
   608  
   609  func (v *InnerQueryFragmentOtherLeafVideo) UnmarshalJSON(b []byte) error {
   610  
   611  	if string(b) == "null" {
   612  		return nil
   613  	}
   614  
   615  	var firstPass struct {
   616  		*InnerQueryFragmentOtherLeafVideo
   617  		graphql.NoUnmarshalJSON
   618  	}
   619  	firstPass.InnerQueryFragmentOtherLeafVideo = v
   620  
   621  	err := json.Unmarshal(b, &firstPass)
   622  	if err != nil {
   623  		return err
   624  	}
   625  
   626  	err = json.Unmarshal(
   627  		b, &v.MoreVideoFields)
   628  	if err != nil {
   629  		return err
   630  	}
   631  	err = json.Unmarshal(
   632  		b, &v.ContentFieldsVideo)
   633  	if err != nil {
   634  		return err
   635  	}
   636  	return nil
   637  }
   638  
   639  type __premarshalInnerQueryFragmentOtherLeafVideo struct {
   640  	Typename string `json:"__typename"`
   641  
   642  	Id *testutil.ID `json:"id"`
   643  
   644  	Parent *MoreVideoFieldsParentTopic `json:"parent"`
   645  
   646  	Name string `json:"name"`
   647  
   648  	Url string `json:"url"`
   649  }
   650  
   651  func (v *InnerQueryFragmentOtherLeafVideo) MarshalJSON() ([]byte, error) {
   652  	premarshaled, err := v.__premarshalJSON()
   653  	if err != nil {
   654  		return nil, err
   655  	}
   656  	return json.Marshal(premarshaled)
   657  }
   658  
   659  func (v *InnerQueryFragmentOtherLeafVideo) __premarshalJSON() (*__premarshalInnerQueryFragmentOtherLeafVideo, error) {
   660  	var retval __premarshalInnerQueryFragmentOtherLeafVideo
   661  
   662  	retval.Typename = v.Typename
   663  	retval.Id = v.MoreVideoFields.Id
   664  	retval.Parent = v.MoreVideoFields.Parent
   665  	retval.Name = v.ContentFieldsVideo.Name
   666  	retval.Url = v.ContentFieldsVideo.Url
   667  	return &retval, nil
   668  }
   669  
   670  // InnerQueryFragmentRandomItemArticle includes the requested fields of the GraphQL type Article.
   671  type InnerQueryFragmentRandomItemArticle struct {
   672  	Typename string `json:"__typename"`
   673  	// ID is the identifier of the content.
   674  	Id                   testutil.ID `json:"id"`
   675  	Name                 string      `json:"name"`
   676  	ContentFieldsArticle `json:"-"`
   677  }
   678  
   679  // GetTypename returns InnerQueryFragmentRandomItemArticle.Typename, and is useful for accessing the field via an interface.
   680  func (v *InnerQueryFragmentRandomItemArticle) GetTypename() string { return v.Typename }
   681  
   682  // GetId returns InnerQueryFragmentRandomItemArticle.Id, and is useful for accessing the field via an interface.
   683  func (v *InnerQueryFragmentRandomItemArticle) GetId() testutil.ID { return v.Id }
   684  
   685  // GetName returns InnerQueryFragmentRandomItemArticle.Name, and is useful for accessing the field via an interface.
   686  func (v *InnerQueryFragmentRandomItemArticle) GetName() string { return v.Name }
   687  
   688  // GetUrl returns InnerQueryFragmentRandomItemArticle.Url, and is useful for accessing the field via an interface.
   689  func (v *InnerQueryFragmentRandomItemArticle) GetUrl() string { return v.ContentFieldsArticle.Url }
   690  
   691  func (v *InnerQueryFragmentRandomItemArticle) UnmarshalJSON(b []byte) error {
   692  
   693  	if string(b) == "null" {
   694  		return nil
   695  	}
   696  
   697  	var firstPass struct {
   698  		*InnerQueryFragmentRandomItemArticle
   699  		graphql.NoUnmarshalJSON
   700  	}
   701  	firstPass.InnerQueryFragmentRandomItemArticle = v
   702  
   703  	err := json.Unmarshal(b, &firstPass)
   704  	if err != nil {
   705  		return err
   706  	}
   707  
   708  	err = json.Unmarshal(
   709  		b, &v.ContentFieldsArticle)
   710  	if err != nil {
   711  		return err
   712  	}
   713  	return nil
   714  }
   715  
   716  type __premarshalInnerQueryFragmentRandomItemArticle struct {
   717  	Typename string `json:"__typename"`
   718  
   719  	Id testutil.ID `json:"id"`
   720  
   721  	Name string `json:"name"`
   722  
   723  	Url string `json:"url"`
   724  }
   725  
   726  func (v *InnerQueryFragmentRandomItemArticle) MarshalJSON() ([]byte, error) {
   727  	premarshaled, err := v.__premarshalJSON()
   728  	if err != nil {
   729  		return nil, err
   730  	}
   731  	return json.Marshal(premarshaled)
   732  }
   733  
   734  func (v *InnerQueryFragmentRandomItemArticle) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomItemArticle, error) {
   735  	var retval __premarshalInnerQueryFragmentRandomItemArticle
   736  
   737  	retval.Typename = v.Typename
   738  	retval.Id = v.Id
   739  	retval.Name = v.Name
   740  	retval.Url = v.ContentFieldsArticle.Url
   741  	return &retval, nil
   742  }
   743  
   744  // InnerQueryFragmentRandomItemContent includes the requested fields of the GraphQL interface Content.
   745  //
   746  // InnerQueryFragmentRandomItemContent is implemented by the following types:
   747  // InnerQueryFragmentRandomItemArticle
   748  // InnerQueryFragmentRandomItemVideo
   749  // InnerQueryFragmentRandomItemTopic
   750  // The GraphQL type's documentation follows.
   751  //
   752  // Content is implemented by various types like Article, Video, and Topic.
   753  type InnerQueryFragmentRandomItemContent interface {
   754  	implementsGraphQLInterfaceInnerQueryFragmentRandomItemContent()
   755  	// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
   756  	GetTypename() string
   757  	// GetId returns the interface-field "id" from its implementation.
   758  	// The GraphQL interface field's documentation follows.
   759  	//
   760  	// ID is the identifier of the content.
   761  	GetId() testutil.ID
   762  	// GetName returns the interface-field "name" from its implementation.
   763  	GetName() string
   764  	ContentFields
   765  	GetContentArticle() (*InnerQueryFragmentRandomItemArticle, bool)
   766  	GetContentVideo() (*InnerQueryFragmentRandomItemVideo, bool)
   767  	GetContentTopic() (*InnerQueryFragmentRandomItemTopic, bool)
   768  }
   769  
   770  func (v *InnerQueryFragmentRandomItemArticle) implementsGraphQLInterfaceInnerQueryFragmentRandomItemContent() {
   771  }
   772  func (v *InnerQueryFragmentRandomItemArticle) GetContentArticle() (*InnerQueryFragmentRandomItemArticle, bool) {
   773  	return v, true
   774  }
   775  func (v *InnerQueryFragmentRandomItemArticle) GetContentVideo() (*InnerQueryFragmentRandomItemVideo, bool) {
   776  	return nil, false
   777  }
   778  func (v *InnerQueryFragmentRandomItemArticle) GetContentTopic() (*InnerQueryFragmentRandomItemTopic, bool) {
   779  	return nil, false
   780  }
   781  func (v *InnerQueryFragmentRandomItemVideo) implementsGraphQLInterfaceInnerQueryFragmentRandomItemContent() {
   782  }
   783  func (v *InnerQueryFragmentRandomItemVideo) GetContentArticle() (*InnerQueryFragmentRandomItemArticle, bool) {
   784  	return nil, false
   785  }
   786  func (v *InnerQueryFragmentRandomItemVideo) GetContentVideo() (*InnerQueryFragmentRandomItemVideo, bool) {
   787  	return v, true
   788  }
   789  func (v *InnerQueryFragmentRandomItemVideo) GetContentTopic() (*InnerQueryFragmentRandomItemTopic, bool) {
   790  	return nil, false
   791  }
   792  func (v *InnerQueryFragmentRandomItemTopic) implementsGraphQLInterfaceInnerQueryFragmentRandomItemContent() {
   793  }
   794  func (v *InnerQueryFragmentRandomItemTopic) GetContentArticle() (*InnerQueryFragmentRandomItemArticle, bool) {
   795  	return nil, false
   796  }
   797  func (v *InnerQueryFragmentRandomItemTopic) GetContentVideo() (*InnerQueryFragmentRandomItemVideo, bool) {
   798  	return nil, false
   799  }
   800  func (v *InnerQueryFragmentRandomItemTopic) GetContentTopic() (*InnerQueryFragmentRandomItemTopic, bool) {
   801  	return v, true
   802  }
   803  
   804  func __unmarshalInnerQueryFragmentRandomItemContent(b []byte, v *InnerQueryFragmentRandomItemContent) error {
   805  	if string(b) == "null" {
   806  		return nil
   807  	}
   808  
   809  	var tn struct {
   810  		TypeName string `json:"__typename"`
   811  	}
   812  	err := json.Unmarshal(b, &tn)
   813  	if err != nil {
   814  		return err
   815  	}
   816  
   817  	switch tn.TypeName {
   818  	case "Article":
   819  		*v = new(InnerQueryFragmentRandomItemArticle)
   820  		return json.Unmarshal(b, *v)
   821  	case "Video":
   822  		*v = new(InnerQueryFragmentRandomItemVideo)
   823  		return json.Unmarshal(b, *v)
   824  	case "Topic":
   825  		*v = new(InnerQueryFragmentRandomItemTopic)
   826  		return json.Unmarshal(b, *v)
   827  	case "":
   828  		return fmt.Errorf(
   829  			"response was missing Content.__typename")
   830  	default:
   831  		return fmt.Errorf(
   832  			`unexpected concrete type for InnerQueryFragmentRandomItemContent: "%v"`, tn.TypeName)
   833  	}
   834  }
   835  
   836  func __marshalInnerQueryFragmentRandomItemContent(v *InnerQueryFragmentRandomItemContent) ([]byte, error) {
   837  
   838  	var typename string
   839  	switch v := (*v).(type) {
   840  	case *InnerQueryFragmentRandomItemArticle:
   841  		typename = "Article"
   842  
   843  		premarshaled, err := v.__premarshalJSON()
   844  		if err != nil {
   845  			return nil, err
   846  		}
   847  		result := struct {
   848  			TypeName string `json:"__typename"`
   849  			*__premarshalInnerQueryFragmentRandomItemArticle
   850  		}{typename, premarshaled}
   851  		return json.Marshal(result)
   852  	case *InnerQueryFragmentRandomItemVideo:
   853  		typename = "Video"
   854  
   855  		premarshaled, err := v.__premarshalJSON()
   856  		if err != nil {
   857  			return nil, err
   858  		}
   859  		result := struct {
   860  			TypeName string `json:"__typename"`
   861  			*__premarshalInnerQueryFragmentRandomItemVideo
   862  		}{typename, premarshaled}
   863  		return json.Marshal(result)
   864  	case *InnerQueryFragmentRandomItemTopic:
   865  		typename = "Topic"
   866  
   867  		premarshaled, err := v.__premarshalJSON()
   868  		if err != nil {
   869  			return nil, err
   870  		}
   871  		result := struct {
   872  			TypeName string `json:"__typename"`
   873  			*__premarshalInnerQueryFragmentRandomItemTopic
   874  		}{typename, premarshaled}
   875  		return json.Marshal(result)
   876  	case nil:
   877  		return []byte("null"), nil
   878  	default:
   879  		return nil, fmt.Errorf(
   880  			`unexpected concrete type for InnerQueryFragmentRandomItemContent: "%T"`, v)
   881  	}
   882  }
   883  
   884  // InnerQueryFragmentRandomItemTopic includes the requested fields of the GraphQL type Topic.
   885  type InnerQueryFragmentRandomItemTopic struct {
   886  	Typename string `json:"__typename"`
   887  	// ID is the identifier of the content.
   888  	Id                 testutil.ID `json:"id"`
   889  	Name               string      `json:"name"`
   890  	ContentFieldsTopic `json:"-"`
   891  }
   892  
   893  // GetTypename returns InnerQueryFragmentRandomItemTopic.Typename, and is useful for accessing the field via an interface.
   894  func (v *InnerQueryFragmentRandomItemTopic) GetTypename() string { return v.Typename }
   895  
   896  // GetId returns InnerQueryFragmentRandomItemTopic.Id, and is useful for accessing the field via an interface.
   897  func (v *InnerQueryFragmentRandomItemTopic) GetId() testutil.ID { return v.Id }
   898  
   899  // GetName returns InnerQueryFragmentRandomItemTopic.Name, and is useful for accessing the field via an interface.
   900  func (v *InnerQueryFragmentRandomItemTopic) GetName() string { return v.Name }
   901  
   902  // GetUrl returns InnerQueryFragmentRandomItemTopic.Url, and is useful for accessing the field via an interface.
   903  func (v *InnerQueryFragmentRandomItemTopic) GetUrl() string { return v.ContentFieldsTopic.Url }
   904  
   905  func (v *InnerQueryFragmentRandomItemTopic) UnmarshalJSON(b []byte) error {
   906  
   907  	if string(b) == "null" {
   908  		return nil
   909  	}
   910  
   911  	var firstPass struct {
   912  		*InnerQueryFragmentRandomItemTopic
   913  		graphql.NoUnmarshalJSON
   914  	}
   915  	firstPass.InnerQueryFragmentRandomItemTopic = v
   916  
   917  	err := json.Unmarshal(b, &firstPass)
   918  	if err != nil {
   919  		return err
   920  	}
   921  
   922  	err = json.Unmarshal(
   923  		b, &v.ContentFieldsTopic)
   924  	if err != nil {
   925  		return err
   926  	}
   927  	return nil
   928  }
   929  
   930  type __premarshalInnerQueryFragmentRandomItemTopic struct {
   931  	Typename string `json:"__typename"`
   932  
   933  	Id testutil.ID `json:"id"`
   934  
   935  	Name string `json:"name"`
   936  
   937  	Url string `json:"url"`
   938  }
   939  
   940  func (v *InnerQueryFragmentRandomItemTopic) MarshalJSON() ([]byte, error) {
   941  	premarshaled, err := v.__premarshalJSON()
   942  	if err != nil {
   943  		return nil, err
   944  	}
   945  	return json.Marshal(premarshaled)
   946  }
   947  
   948  func (v *InnerQueryFragmentRandomItemTopic) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomItemTopic, error) {
   949  	var retval __premarshalInnerQueryFragmentRandomItemTopic
   950  
   951  	retval.Typename = v.Typename
   952  	retval.Id = v.Id
   953  	retval.Name = v.Name
   954  	retval.Url = v.ContentFieldsTopic.Url
   955  	return &retval, nil
   956  }
   957  
   958  // InnerQueryFragmentRandomItemVideo includes the requested fields of the GraphQL type Video.
   959  type InnerQueryFragmentRandomItemVideo struct {
   960  	Typename string `json:"__typename"`
   961  	// ID is the identifier of the content.
   962  	Id                 testutil.ID `json:"id"`
   963  	Name               string      `json:"name"`
   964  	VideoFields        `json:"-"`
   965  	ContentFieldsVideo `json:"-"`
   966  }
   967  
   968  // GetTypename returns InnerQueryFragmentRandomItemVideo.Typename, and is useful for accessing the field via an interface.
   969  func (v *InnerQueryFragmentRandomItemVideo) GetTypename() string { return v.Typename }
   970  
   971  // GetId returns InnerQueryFragmentRandomItemVideo.Id, and is useful for accessing the field via an interface.
   972  func (v *InnerQueryFragmentRandomItemVideo) GetId() testutil.ID { return v.Id }
   973  
   974  // GetName returns InnerQueryFragmentRandomItemVideo.Name, and is useful for accessing the field via an interface.
   975  func (v *InnerQueryFragmentRandomItemVideo) GetName() string { return v.Name }
   976  
   977  // GetUrl returns InnerQueryFragmentRandomItemVideo.Url, and is useful for accessing the field via an interface.
   978  func (v *InnerQueryFragmentRandomItemVideo) GetUrl() string { return v.VideoFields.Url }
   979  
   980  // GetDuration returns InnerQueryFragmentRandomItemVideo.Duration, and is useful for accessing the field via an interface.
   981  func (v *InnerQueryFragmentRandomItemVideo) GetDuration() int { return v.VideoFields.Duration }
   982  
   983  // GetThumbnail returns InnerQueryFragmentRandomItemVideo.Thumbnail, and is useful for accessing the field via an interface.
   984  func (v *InnerQueryFragmentRandomItemVideo) GetThumbnail() VideoFieldsThumbnail {
   985  	return v.VideoFields.Thumbnail
   986  }
   987  
   988  func (v *InnerQueryFragmentRandomItemVideo) UnmarshalJSON(b []byte) error {
   989  
   990  	if string(b) == "null" {
   991  		return nil
   992  	}
   993  
   994  	var firstPass struct {
   995  		*InnerQueryFragmentRandomItemVideo
   996  		graphql.NoUnmarshalJSON
   997  	}
   998  	firstPass.InnerQueryFragmentRandomItemVideo = v
   999  
  1000  	err := json.Unmarshal(b, &firstPass)
  1001  	if err != nil {
  1002  		return err
  1003  	}
  1004  
  1005  	err = json.Unmarshal(
  1006  		b, &v.VideoFields)
  1007  	if err != nil {
  1008  		return err
  1009  	}
  1010  	err = json.Unmarshal(
  1011  		b, &v.ContentFieldsVideo)
  1012  	if err != nil {
  1013  		return err
  1014  	}
  1015  	return nil
  1016  }
  1017  
  1018  type __premarshalInnerQueryFragmentRandomItemVideo struct {
  1019  	Typename string `json:"__typename"`
  1020  
  1021  	Id testutil.ID `json:"id"`
  1022  
  1023  	Name string `json:"name"`
  1024  
  1025  	Url string `json:"url"`
  1026  
  1027  	Duration int `json:"duration"`
  1028  
  1029  	Thumbnail VideoFieldsThumbnail `json:"thumbnail"`
  1030  }
  1031  
  1032  func (v *InnerQueryFragmentRandomItemVideo) MarshalJSON() ([]byte, error) {
  1033  	premarshaled, err := v.__premarshalJSON()
  1034  	if err != nil {
  1035  		return nil, err
  1036  	}
  1037  	return json.Marshal(premarshaled)
  1038  }
  1039  
  1040  func (v *InnerQueryFragmentRandomItemVideo) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomItemVideo, error) {
  1041  	var retval __premarshalInnerQueryFragmentRandomItemVideo
  1042  
  1043  	retval.Typename = v.Typename
  1044  	retval.Id = v.Id
  1045  	retval.Name = v.Name
  1046  	retval.Url = v.VideoFields.Url
  1047  	retval.Duration = v.VideoFields.Duration
  1048  	retval.Thumbnail = v.VideoFields.Thumbnail
  1049  	return &retval, nil
  1050  }
  1051  
  1052  // InnerQueryFragmentRandomLeafArticle includes the requested fields of the GraphQL type Article.
  1053  type InnerQueryFragmentRandomLeafArticle struct {
  1054  	Typename             string `json:"__typename"`
  1055  	ContentFieldsArticle `json:"-"`
  1056  }
  1057  
  1058  // GetTypename returns InnerQueryFragmentRandomLeafArticle.Typename, and is useful for accessing the field via an interface.
  1059  func (v *InnerQueryFragmentRandomLeafArticle) GetTypename() string { return v.Typename }
  1060  
  1061  // GetName returns InnerQueryFragmentRandomLeafArticle.Name, and is useful for accessing the field via an interface.
  1062  func (v *InnerQueryFragmentRandomLeafArticle) GetName() string { return v.ContentFieldsArticle.Name }
  1063  
  1064  // GetUrl returns InnerQueryFragmentRandomLeafArticle.Url, and is useful for accessing the field via an interface.
  1065  func (v *InnerQueryFragmentRandomLeafArticle) GetUrl() string { return v.ContentFieldsArticle.Url }
  1066  
  1067  func (v *InnerQueryFragmentRandomLeafArticle) UnmarshalJSON(b []byte) error {
  1068  
  1069  	if string(b) == "null" {
  1070  		return nil
  1071  	}
  1072  
  1073  	var firstPass struct {
  1074  		*InnerQueryFragmentRandomLeafArticle
  1075  		graphql.NoUnmarshalJSON
  1076  	}
  1077  	firstPass.InnerQueryFragmentRandomLeafArticle = v
  1078  
  1079  	err := json.Unmarshal(b, &firstPass)
  1080  	if err != nil {
  1081  		return err
  1082  	}
  1083  
  1084  	err = json.Unmarshal(
  1085  		b, &v.ContentFieldsArticle)
  1086  	if err != nil {
  1087  		return err
  1088  	}
  1089  	return nil
  1090  }
  1091  
  1092  type __premarshalInnerQueryFragmentRandomLeafArticle struct {
  1093  	Typename string `json:"__typename"`
  1094  
  1095  	Name string `json:"name"`
  1096  
  1097  	Url string `json:"url"`
  1098  }
  1099  
  1100  func (v *InnerQueryFragmentRandomLeafArticle) MarshalJSON() ([]byte, error) {
  1101  	premarshaled, err := v.__premarshalJSON()
  1102  	if err != nil {
  1103  		return nil, err
  1104  	}
  1105  	return json.Marshal(premarshaled)
  1106  }
  1107  
  1108  func (v *InnerQueryFragmentRandomLeafArticle) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomLeafArticle, error) {
  1109  	var retval __premarshalInnerQueryFragmentRandomLeafArticle
  1110  
  1111  	retval.Typename = v.Typename
  1112  	retval.Name = v.ContentFieldsArticle.Name
  1113  	retval.Url = v.ContentFieldsArticle.Url
  1114  	return &retval, nil
  1115  }
  1116  
  1117  // InnerQueryFragmentRandomLeafLeafContent includes the requested fields of the GraphQL interface LeafContent.
  1118  //
  1119  // InnerQueryFragmentRandomLeafLeafContent is implemented by the following types:
  1120  // InnerQueryFragmentRandomLeafArticle
  1121  // InnerQueryFragmentRandomLeafVideo
  1122  // The GraphQL type's documentation follows.
  1123  //
  1124  // LeafContent represents content items that can't have child-nodes.
  1125  type InnerQueryFragmentRandomLeafLeafContent interface {
  1126  	implementsGraphQLInterfaceInnerQueryFragmentRandomLeafLeafContent()
  1127  	// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
  1128  	GetTypename() string
  1129  	GetLeafContentArticle() (*InnerQueryFragmentRandomLeafArticle, bool)
  1130  	GetLeafContentVideo() (*InnerQueryFragmentRandomLeafVideo, bool)
  1131  }
  1132  
  1133  func (v *InnerQueryFragmentRandomLeafArticle) implementsGraphQLInterfaceInnerQueryFragmentRandomLeafLeafContent() {
  1134  }
  1135  func (v *InnerQueryFragmentRandomLeafArticle) GetLeafContentArticle() (*InnerQueryFragmentRandomLeafArticle, bool) {
  1136  	return v, true
  1137  }
  1138  func (v *InnerQueryFragmentRandomLeafArticle) GetLeafContentVideo() (*InnerQueryFragmentRandomLeafVideo, bool) {
  1139  	return nil, false
  1140  }
  1141  func (v *InnerQueryFragmentRandomLeafVideo) implementsGraphQLInterfaceInnerQueryFragmentRandomLeafLeafContent() {
  1142  }
  1143  func (v *InnerQueryFragmentRandomLeafVideo) GetLeafContentArticle() (*InnerQueryFragmentRandomLeafArticle, bool) {
  1144  	return nil, false
  1145  }
  1146  func (v *InnerQueryFragmentRandomLeafVideo) GetLeafContentVideo() (*InnerQueryFragmentRandomLeafVideo, bool) {
  1147  	return v, true
  1148  }
  1149  
  1150  func __unmarshalInnerQueryFragmentRandomLeafLeafContent(b []byte, v *InnerQueryFragmentRandomLeafLeafContent) error {
  1151  	if string(b) == "null" {
  1152  		return nil
  1153  	}
  1154  
  1155  	var tn struct {
  1156  		TypeName string `json:"__typename"`
  1157  	}
  1158  	err := json.Unmarshal(b, &tn)
  1159  	if err != nil {
  1160  		return err
  1161  	}
  1162  
  1163  	switch tn.TypeName {
  1164  	case "Article":
  1165  		*v = new(InnerQueryFragmentRandomLeafArticle)
  1166  		return json.Unmarshal(b, *v)
  1167  	case "Video":
  1168  		*v = new(InnerQueryFragmentRandomLeafVideo)
  1169  		return json.Unmarshal(b, *v)
  1170  	case "":
  1171  		return fmt.Errorf(
  1172  			"response was missing LeafContent.__typename")
  1173  	default:
  1174  		return fmt.Errorf(
  1175  			`unexpected concrete type for InnerQueryFragmentRandomLeafLeafContent: "%v"`, tn.TypeName)
  1176  	}
  1177  }
  1178  
  1179  func __marshalInnerQueryFragmentRandomLeafLeafContent(v *InnerQueryFragmentRandomLeafLeafContent) ([]byte, error) {
  1180  
  1181  	var typename string
  1182  	switch v := (*v).(type) {
  1183  	case *InnerQueryFragmentRandomLeafArticle:
  1184  		typename = "Article"
  1185  
  1186  		premarshaled, err := v.__premarshalJSON()
  1187  		if err != nil {
  1188  			return nil, err
  1189  		}
  1190  		result := struct {
  1191  			TypeName string `json:"__typename"`
  1192  			*__premarshalInnerQueryFragmentRandomLeafArticle
  1193  		}{typename, premarshaled}
  1194  		return json.Marshal(result)
  1195  	case *InnerQueryFragmentRandomLeafVideo:
  1196  		typename = "Video"
  1197  
  1198  		premarshaled, err := v.__premarshalJSON()
  1199  		if err != nil {
  1200  			return nil, err
  1201  		}
  1202  		result := struct {
  1203  			TypeName string `json:"__typename"`
  1204  			*__premarshalInnerQueryFragmentRandomLeafVideo
  1205  		}{typename, premarshaled}
  1206  		return json.Marshal(result)
  1207  	case nil:
  1208  		return []byte("null"), nil
  1209  	default:
  1210  		return nil, fmt.Errorf(
  1211  			`unexpected concrete type for InnerQueryFragmentRandomLeafLeafContent: "%T"`, v)
  1212  	}
  1213  }
  1214  
  1215  // InnerQueryFragmentRandomLeafVideo includes the requested fields of the GraphQL type Video.
  1216  type InnerQueryFragmentRandomLeafVideo struct {
  1217  	Typename           string `json:"__typename"`
  1218  	VideoFields        `json:"-"`
  1219  	MoreVideoFields    `json:"-"`
  1220  	ContentFieldsVideo `json:"-"`
  1221  }
  1222  
  1223  // GetTypename returns InnerQueryFragmentRandomLeafVideo.Typename, and is useful for accessing the field via an interface.
  1224  func (v *InnerQueryFragmentRandomLeafVideo) GetTypename() string { return v.Typename }
  1225  
  1226  // GetId returns InnerQueryFragmentRandomLeafVideo.Id, and is useful for accessing the field via an interface.
  1227  func (v *InnerQueryFragmentRandomLeafVideo) GetId() testutil.ID { return v.VideoFields.Id }
  1228  
  1229  // GetName returns InnerQueryFragmentRandomLeafVideo.Name, and is useful for accessing the field via an interface.
  1230  func (v *InnerQueryFragmentRandomLeafVideo) GetName() string { return v.VideoFields.Name }
  1231  
  1232  // GetUrl returns InnerQueryFragmentRandomLeafVideo.Url, and is useful for accessing the field via an interface.
  1233  func (v *InnerQueryFragmentRandomLeafVideo) GetUrl() string { return v.VideoFields.Url }
  1234  
  1235  // GetDuration returns InnerQueryFragmentRandomLeafVideo.Duration, and is useful for accessing the field via an interface.
  1236  func (v *InnerQueryFragmentRandomLeafVideo) GetDuration() int { return v.VideoFields.Duration }
  1237  
  1238  // GetThumbnail returns InnerQueryFragmentRandomLeafVideo.Thumbnail, and is useful for accessing the field via an interface.
  1239  func (v *InnerQueryFragmentRandomLeafVideo) GetThumbnail() VideoFieldsThumbnail {
  1240  	return v.VideoFields.Thumbnail
  1241  }
  1242  
  1243  // GetParent returns InnerQueryFragmentRandomLeafVideo.Parent, and is useful for accessing the field via an interface.
  1244  func (v *InnerQueryFragmentRandomLeafVideo) GetParent() *MoreVideoFieldsParentTopic {
  1245  	return v.MoreVideoFields.Parent
  1246  }
  1247  
  1248  func (v *InnerQueryFragmentRandomLeafVideo) UnmarshalJSON(b []byte) error {
  1249  
  1250  	if string(b) == "null" {
  1251  		return nil
  1252  	}
  1253  
  1254  	var firstPass struct {
  1255  		*InnerQueryFragmentRandomLeafVideo
  1256  		graphql.NoUnmarshalJSON
  1257  	}
  1258  	firstPass.InnerQueryFragmentRandomLeafVideo = v
  1259  
  1260  	err := json.Unmarshal(b, &firstPass)
  1261  	if err != nil {
  1262  		return err
  1263  	}
  1264  
  1265  	err = json.Unmarshal(
  1266  		b, &v.VideoFields)
  1267  	if err != nil {
  1268  		return err
  1269  	}
  1270  	err = json.Unmarshal(
  1271  		b, &v.MoreVideoFields)
  1272  	if err != nil {
  1273  		return err
  1274  	}
  1275  	err = json.Unmarshal(
  1276  		b, &v.ContentFieldsVideo)
  1277  	if err != nil {
  1278  		return err
  1279  	}
  1280  	return nil
  1281  }
  1282  
  1283  type __premarshalInnerQueryFragmentRandomLeafVideo struct {
  1284  	Typename string `json:"__typename"`
  1285  
  1286  	Id testutil.ID `json:"id"`
  1287  
  1288  	Name string `json:"name"`
  1289  
  1290  	Url string `json:"url"`
  1291  
  1292  	Duration int `json:"duration"`
  1293  
  1294  	Thumbnail VideoFieldsThumbnail `json:"thumbnail"`
  1295  
  1296  	Parent *MoreVideoFieldsParentTopic `json:"parent"`
  1297  }
  1298  
  1299  func (v *InnerQueryFragmentRandomLeafVideo) MarshalJSON() ([]byte, error) {
  1300  	premarshaled, err := v.__premarshalJSON()
  1301  	if err != nil {
  1302  		return nil, err
  1303  	}
  1304  	return json.Marshal(premarshaled)
  1305  }
  1306  
  1307  func (v *InnerQueryFragmentRandomLeafVideo) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomLeafVideo, error) {
  1308  	var retval __premarshalInnerQueryFragmentRandomLeafVideo
  1309  
  1310  	retval.Typename = v.Typename
  1311  	retval.Id = v.VideoFields.Id
  1312  	retval.Name = v.VideoFields.Name
  1313  	retval.Url = v.VideoFields.Url
  1314  	retval.Duration = v.VideoFields.Duration
  1315  	retval.Thumbnail = v.VideoFields.Thumbnail
  1316  	retval.Parent = v.MoreVideoFields.Parent
  1317  	return &retval, nil
  1318  }
  1319  
  1320  // MoreVideoFields includes the GraphQL fields of Video requested by the fragment MoreVideoFields.
  1321  type MoreVideoFields struct {
  1322  	// ID is documented in the Content interface.
  1323  	Id     *testutil.ID                `json:"id"`
  1324  	Parent *MoreVideoFieldsParentTopic `json:"parent"`
  1325  }
  1326  
  1327  // GetId returns MoreVideoFields.Id, and is useful for accessing the field via an interface.
  1328  func (v *MoreVideoFields) GetId() *testutil.ID { return v.Id }
  1329  
  1330  // GetParent returns MoreVideoFields.Parent, and is useful for accessing the field via an interface.
  1331  func (v *MoreVideoFields) GetParent() *MoreVideoFieldsParentTopic { return v.Parent }
  1332  
  1333  // MoreVideoFieldsParentTopic includes the requested fields of the GraphQL type Topic.
  1334  type MoreVideoFieldsParentTopic struct {
  1335  	Name               *string `json:"name"`
  1336  	Url                *string `json:"url"`
  1337  	ContentFieldsTopic `json:"-"`
  1338  	Children           []MoreVideoFieldsParentTopicChildrenContent `json:"-"`
  1339  }
  1340  
  1341  // GetName returns MoreVideoFieldsParentTopic.Name, and is useful for accessing the field via an interface.
  1342  func (v *MoreVideoFieldsParentTopic) GetName() *string { return v.Name }
  1343  
  1344  // GetUrl returns MoreVideoFieldsParentTopic.Url, and is useful for accessing the field via an interface.
  1345  func (v *MoreVideoFieldsParentTopic) GetUrl() *string { return v.Url }
  1346  
  1347  // GetChildren returns MoreVideoFieldsParentTopic.Children, and is useful for accessing the field via an interface.
  1348  func (v *MoreVideoFieldsParentTopic) GetChildren() []MoreVideoFieldsParentTopicChildrenContent {
  1349  	return v.Children
  1350  }
  1351  
  1352  func (v *MoreVideoFieldsParentTopic) UnmarshalJSON(b []byte) error {
  1353  
  1354  	if string(b) == "null" {
  1355  		return nil
  1356  	}
  1357  
  1358  	var firstPass struct {
  1359  		*MoreVideoFieldsParentTopic
  1360  		Children []json.RawMessage `json:"children"`
  1361  		graphql.NoUnmarshalJSON
  1362  	}
  1363  	firstPass.MoreVideoFieldsParentTopic = v
  1364  
  1365  	err := json.Unmarshal(b, &firstPass)
  1366  	if err != nil {
  1367  		return err
  1368  	}
  1369  
  1370  	err = json.Unmarshal(
  1371  		b, &v.ContentFieldsTopic)
  1372  	if err != nil {
  1373  		return err
  1374  	}
  1375  
  1376  	{
  1377  		dst := &v.Children
  1378  		src := firstPass.Children
  1379  		*dst = make(
  1380  			[]MoreVideoFieldsParentTopicChildrenContent,
  1381  			len(src))
  1382  		for i, src := range src {
  1383  			dst := &(*dst)[i]
  1384  			if len(src) != 0 && string(src) != "null" {
  1385  				err = __unmarshalMoreVideoFieldsParentTopicChildrenContent(
  1386  					src, dst)
  1387  				if err != nil {
  1388  					return fmt.Errorf(
  1389  						"Unable to unmarshal MoreVideoFieldsParentTopic.Children: %w", err)
  1390  				}
  1391  			}
  1392  		}
  1393  	}
  1394  	return nil
  1395  }
  1396  
  1397  type __premarshalMoreVideoFieldsParentTopic struct {
  1398  	Name *string `json:"name"`
  1399  
  1400  	Url *string `json:"url"`
  1401  
  1402  	Children []json.RawMessage `json:"children"`
  1403  }
  1404  
  1405  func (v *MoreVideoFieldsParentTopic) MarshalJSON() ([]byte, error) {
  1406  	premarshaled, err := v.__premarshalJSON()
  1407  	if err != nil {
  1408  		return nil, err
  1409  	}
  1410  	return json.Marshal(premarshaled)
  1411  }
  1412  
  1413  func (v *MoreVideoFieldsParentTopic) __premarshalJSON() (*__premarshalMoreVideoFieldsParentTopic, error) {
  1414  	var retval __premarshalMoreVideoFieldsParentTopic
  1415  
  1416  	retval.Name = v.Name
  1417  	retval.Url = v.Url
  1418  	{
  1419  
  1420  		dst := &retval.Children
  1421  		src := v.Children
  1422  		*dst = make(
  1423  			[]json.RawMessage,
  1424  			len(src))
  1425  		for i, src := range src {
  1426  			dst := &(*dst)[i]
  1427  			var err error
  1428  			*dst, err = __marshalMoreVideoFieldsParentTopicChildrenContent(
  1429  				&src)
  1430  			if err != nil {
  1431  				return nil, fmt.Errorf(
  1432  					"Unable to marshal MoreVideoFieldsParentTopic.Children: %w", err)
  1433  			}
  1434  		}
  1435  	}
  1436  	return &retval, nil
  1437  }
  1438  
  1439  // MoreVideoFieldsParentTopicChildrenArticle includes the requested fields of the GraphQL type Article.
  1440  type MoreVideoFieldsParentTopicChildrenArticle struct {
  1441  	Typename *string `json:"__typename"`
  1442  }
  1443  
  1444  // GetTypename returns MoreVideoFieldsParentTopicChildrenArticle.Typename, and is useful for accessing the field via an interface.
  1445  func (v *MoreVideoFieldsParentTopicChildrenArticle) GetTypename() *string { return v.Typename }
  1446  
  1447  // MoreVideoFieldsParentTopicChildrenContent includes the requested fields of the GraphQL interface Content.
  1448  //
  1449  // MoreVideoFieldsParentTopicChildrenContent is implemented by the following types:
  1450  // MoreVideoFieldsParentTopicChildrenArticle
  1451  // MoreVideoFieldsParentTopicChildrenVideo
  1452  // MoreVideoFieldsParentTopicChildrenTopic
  1453  // The GraphQL type's documentation follows.
  1454  //
  1455  // Content is implemented by various types like Article, Video, and Topic.
  1456  type MoreVideoFieldsParentTopicChildrenContent interface {
  1457  	implementsGraphQLInterfaceMoreVideoFieldsParentTopicChildrenContent()
  1458  	// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
  1459  	GetTypename() *string
  1460  	GetContentArticle() (*MoreVideoFieldsParentTopicChildrenArticle, bool)
  1461  	GetContentVideo() (*MoreVideoFieldsParentTopicChildrenVideo, bool)
  1462  	GetContentTopic() (*MoreVideoFieldsParentTopicChildrenTopic, bool)
  1463  }
  1464  
  1465  func (v *MoreVideoFieldsParentTopicChildrenArticle) implementsGraphQLInterfaceMoreVideoFieldsParentTopicChildrenContent() {
  1466  }
  1467  func (v *MoreVideoFieldsParentTopicChildrenArticle) GetContentArticle() (*MoreVideoFieldsParentTopicChildrenArticle, bool) {
  1468  	return v, true
  1469  }
  1470  func (v *MoreVideoFieldsParentTopicChildrenArticle) GetContentVideo() (*MoreVideoFieldsParentTopicChildrenVideo, bool) {
  1471  	return nil, false
  1472  }
  1473  func (v *MoreVideoFieldsParentTopicChildrenArticle) GetContentTopic() (*MoreVideoFieldsParentTopicChildrenTopic, bool) {
  1474  	return nil, false
  1475  }
  1476  func (v *MoreVideoFieldsParentTopicChildrenVideo) implementsGraphQLInterfaceMoreVideoFieldsParentTopicChildrenContent() {
  1477  }
  1478  func (v *MoreVideoFieldsParentTopicChildrenVideo) GetContentArticle() (*MoreVideoFieldsParentTopicChildrenArticle, bool) {
  1479  	return nil, false
  1480  }
  1481  func (v *MoreVideoFieldsParentTopicChildrenVideo) GetContentVideo() (*MoreVideoFieldsParentTopicChildrenVideo, bool) {
  1482  	return v, true
  1483  }
  1484  func (v *MoreVideoFieldsParentTopicChildrenVideo) GetContentTopic() (*MoreVideoFieldsParentTopicChildrenTopic, bool) {
  1485  	return nil, false
  1486  }
  1487  func (v *MoreVideoFieldsParentTopicChildrenTopic) implementsGraphQLInterfaceMoreVideoFieldsParentTopicChildrenContent() {
  1488  }
  1489  func (v *MoreVideoFieldsParentTopicChildrenTopic) GetContentArticle() (*MoreVideoFieldsParentTopicChildrenArticle, bool) {
  1490  	return nil, false
  1491  }
  1492  func (v *MoreVideoFieldsParentTopicChildrenTopic) GetContentVideo() (*MoreVideoFieldsParentTopicChildrenVideo, bool) {
  1493  	return nil, false
  1494  }
  1495  func (v *MoreVideoFieldsParentTopicChildrenTopic) GetContentTopic() (*MoreVideoFieldsParentTopicChildrenTopic, bool) {
  1496  	return v, true
  1497  }
  1498  
  1499  func __unmarshalMoreVideoFieldsParentTopicChildrenContent(b []byte, v *MoreVideoFieldsParentTopicChildrenContent) error {
  1500  	if string(b) == "null" {
  1501  		return nil
  1502  	}
  1503  
  1504  	var tn struct {
  1505  		TypeName string `json:"__typename"`
  1506  	}
  1507  	err := json.Unmarshal(b, &tn)
  1508  	if err != nil {
  1509  		return err
  1510  	}
  1511  
  1512  	switch tn.TypeName {
  1513  	case "Article":
  1514  		*v = new(MoreVideoFieldsParentTopicChildrenArticle)
  1515  		return json.Unmarshal(b, *v)
  1516  	case "Video":
  1517  		*v = new(MoreVideoFieldsParentTopicChildrenVideo)
  1518  		return json.Unmarshal(b, *v)
  1519  	case "Topic":
  1520  		*v = new(MoreVideoFieldsParentTopicChildrenTopic)
  1521  		return json.Unmarshal(b, *v)
  1522  	case "":
  1523  		return fmt.Errorf(
  1524  			"response was missing Content.__typename")
  1525  	default:
  1526  		return fmt.Errorf(
  1527  			`unexpected concrete type for MoreVideoFieldsParentTopicChildrenContent: "%v"`, tn.TypeName)
  1528  	}
  1529  }
  1530  
  1531  func __marshalMoreVideoFieldsParentTopicChildrenContent(v *MoreVideoFieldsParentTopicChildrenContent) ([]byte, error) {
  1532  
  1533  	var typename string
  1534  	switch v := (*v).(type) {
  1535  	case *MoreVideoFieldsParentTopicChildrenArticle:
  1536  		typename = "Article"
  1537  
  1538  		result := struct {
  1539  			TypeName string `json:"__typename"`
  1540  			*MoreVideoFieldsParentTopicChildrenArticle
  1541  		}{typename, v}
  1542  		return json.Marshal(result)
  1543  	case *MoreVideoFieldsParentTopicChildrenVideo:
  1544  		typename = "Video"
  1545  
  1546  		premarshaled, err := v.__premarshalJSON()
  1547  		if err != nil {
  1548  			return nil, err
  1549  		}
  1550  		result := struct {
  1551  			TypeName string `json:"__typename"`
  1552  			*__premarshalMoreVideoFieldsParentTopicChildrenVideo
  1553  		}{typename, premarshaled}
  1554  		return json.Marshal(result)
  1555  	case *MoreVideoFieldsParentTopicChildrenTopic:
  1556  		typename = "Topic"
  1557  
  1558  		result := struct {
  1559  			TypeName string `json:"__typename"`
  1560  			*MoreVideoFieldsParentTopicChildrenTopic
  1561  		}{typename, v}
  1562  		return json.Marshal(result)
  1563  	case nil:
  1564  		return []byte("null"), nil
  1565  	default:
  1566  		return nil, fmt.Errorf(
  1567  			`unexpected concrete type for MoreVideoFieldsParentTopicChildrenContent: "%T"`, v)
  1568  	}
  1569  }
  1570  
  1571  // MoreVideoFieldsParentTopicChildrenTopic includes the requested fields of the GraphQL type Topic.
  1572  type MoreVideoFieldsParentTopicChildrenTopic struct {
  1573  	Typename *string `json:"__typename"`
  1574  }
  1575  
  1576  // GetTypename returns MoreVideoFieldsParentTopicChildrenTopic.Typename, and is useful for accessing the field via an interface.
  1577  func (v *MoreVideoFieldsParentTopicChildrenTopic) GetTypename() *string { return v.Typename }
  1578  
  1579  // MoreVideoFieldsParentTopicChildrenVideo includes the requested fields of the GraphQL type Video.
  1580  type MoreVideoFieldsParentTopicChildrenVideo struct {
  1581  	Typename    *string `json:"__typename"`
  1582  	VideoFields `json:"-"`
  1583  }
  1584  
  1585  // GetTypename returns MoreVideoFieldsParentTopicChildrenVideo.Typename, and is useful for accessing the field via an interface.
  1586  func (v *MoreVideoFieldsParentTopicChildrenVideo) GetTypename() *string { return v.Typename }
  1587  
  1588  // GetId returns MoreVideoFieldsParentTopicChildrenVideo.Id, and is useful for accessing the field via an interface.
  1589  func (v *MoreVideoFieldsParentTopicChildrenVideo) GetId() testutil.ID { return v.VideoFields.Id }
  1590  
  1591  // GetName returns MoreVideoFieldsParentTopicChildrenVideo.Name, and is useful for accessing the field via an interface.
  1592  func (v *MoreVideoFieldsParentTopicChildrenVideo) GetName() string { return v.VideoFields.Name }
  1593  
  1594  // GetUrl returns MoreVideoFieldsParentTopicChildrenVideo.Url, and is useful for accessing the field via an interface.
  1595  func (v *MoreVideoFieldsParentTopicChildrenVideo) GetUrl() string { return v.VideoFields.Url }
  1596  
  1597  // GetDuration returns MoreVideoFieldsParentTopicChildrenVideo.Duration, and is useful for accessing the field via an interface.
  1598  func (v *MoreVideoFieldsParentTopicChildrenVideo) GetDuration() int { return v.VideoFields.Duration }
  1599  
  1600  // GetThumbnail returns MoreVideoFieldsParentTopicChildrenVideo.Thumbnail, and is useful for accessing the field via an interface.
  1601  func (v *MoreVideoFieldsParentTopicChildrenVideo) GetThumbnail() VideoFieldsThumbnail {
  1602  	return v.VideoFields.Thumbnail
  1603  }
  1604  
  1605  func (v *MoreVideoFieldsParentTopicChildrenVideo) UnmarshalJSON(b []byte) error {
  1606  
  1607  	if string(b) == "null" {
  1608  		return nil
  1609  	}
  1610  
  1611  	var firstPass struct {
  1612  		*MoreVideoFieldsParentTopicChildrenVideo
  1613  		graphql.NoUnmarshalJSON
  1614  	}
  1615  	firstPass.MoreVideoFieldsParentTopicChildrenVideo = v
  1616  
  1617  	err := json.Unmarshal(b, &firstPass)
  1618  	if err != nil {
  1619  		return err
  1620  	}
  1621  
  1622  	err = json.Unmarshal(
  1623  		b, &v.VideoFields)
  1624  	if err != nil {
  1625  		return err
  1626  	}
  1627  	return nil
  1628  }
  1629  
  1630  type __premarshalMoreVideoFieldsParentTopicChildrenVideo struct {
  1631  	Typename *string `json:"__typename"`
  1632  
  1633  	Id testutil.ID `json:"id"`
  1634  
  1635  	Name string `json:"name"`
  1636  
  1637  	Url string `json:"url"`
  1638  
  1639  	Duration int `json:"duration"`
  1640  
  1641  	Thumbnail VideoFieldsThumbnail `json:"thumbnail"`
  1642  }
  1643  
  1644  func (v *MoreVideoFieldsParentTopicChildrenVideo) MarshalJSON() ([]byte, error) {
  1645  	premarshaled, err := v.__premarshalJSON()
  1646  	if err != nil {
  1647  		return nil, err
  1648  	}
  1649  	return json.Marshal(premarshaled)
  1650  }
  1651  
  1652  func (v *MoreVideoFieldsParentTopicChildrenVideo) __premarshalJSON() (*__premarshalMoreVideoFieldsParentTopicChildrenVideo, error) {
  1653  	var retval __premarshalMoreVideoFieldsParentTopicChildrenVideo
  1654  
  1655  	retval.Typename = v.Typename
  1656  	retval.Id = v.VideoFields.Id
  1657  	retval.Name = v.VideoFields.Name
  1658  	retval.Url = v.VideoFields.Url
  1659  	retval.Duration = v.VideoFields.Duration
  1660  	retval.Thumbnail = v.VideoFields.Thumbnail
  1661  	return &retval, nil
  1662  }
  1663  
  1664  // QueryFragment includes the GraphQL fields of Query requested by the fragment QueryFragment.
  1665  // The GraphQL type's documentation follows.
  1666  //
  1667  // Query's description is probably ignored by almost all callers.
  1668  type QueryFragment struct {
  1669  	InnerQueryFragment `json:"-"`
  1670  }
  1671  
  1672  // GetRandomItem returns QueryFragment.RandomItem, and is useful for accessing the field via an interface.
  1673  func (v *QueryFragment) GetRandomItem() InnerQueryFragmentRandomItemContent {
  1674  	return v.InnerQueryFragment.RandomItem
  1675  }
  1676  
  1677  // GetRandomLeaf returns QueryFragment.RandomLeaf, and is useful for accessing the field via an interface.
  1678  func (v *QueryFragment) GetRandomLeaf() InnerQueryFragmentRandomLeafLeafContent {
  1679  	return v.InnerQueryFragment.RandomLeaf
  1680  }
  1681  
  1682  // GetOtherLeaf returns QueryFragment.OtherLeaf, and is useful for accessing the field via an interface.
  1683  func (v *QueryFragment) GetOtherLeaf() InnerQueryFragmentOtherLeafLeafContent {
  1684  	return v.InnerQueryFragment.OtherLeaf
  1685  }
  1686  
  1687  func (v *QueryFragment) UnmarshalJSON(b []byte) error {
  1688  
  1689  	if string(b) == "null" {
  1690  		return nil
  1691  	}
  1692  
  1693  	var firstPass struct {
  1694  		*QueryFragment
  1695  		graphql.NoUnmarshalJSON
  1696  	}
  1697  	firstPass.QueryFragment = v
  1698  
  1699  	err := json.Unmarshal(b, &firstPass)
  1700  	if err != nil {
  1701  		return err
  1702  	}
  1703  
  1704  	err = json.Unmarshal(
  1705  		b, &v.InnerQueryFragment)
  1706  	if err != nil {
  1707  		return err
  1708  	}
  1709  	return nil
  1710  }
  1711  
  1712  type __premarshalQueryFragment struct {
  1713  	RandomItem json.RawMessage `json:"randomItem"`
  1714  
  1715  	RandomLeaf json.RawMessage `json:"randomLeaf"`
  1716  
  1717  	OtherLeaf json.RawMessage `json:"otherLeaf"`
  1718  }
  1719  
  1720  func (v *QueryFragment) MarshalJSON() ([]byte, error) {
  1721  	premarshaled, err := v.__premarshalJSON()
  1722  	if err != nil {
  1723  		return nil, err
  1724  	}
  1725  	return json.Marshal(premarshaled)
  1726  }
  1727  
  1728  func (v *QueryFragment) __premarshalJSON() (*__premarshalQueryFragment, error) {
  1729  	var retval __premarshalQueryFragment
  1730  
  1731  	{
  1732  
  1733  		dst := &retval.RandomItem
  1734  		src := v.InnerQueryFragment.RandomItem
  1735  		var err error
  1736  		*dst, err = __marshalInnerQueryFragmentRandomItemContent(
  1737  			&src)
  1738  		if err != nil {
  1739  			return nil, fmt.Errorf(
  1740  				"Unable to marshal QueryFragment.InnerQueryFragment.RandomItem: %w", err)
  1741  		}
  1742  	}
  1743  	{
  1744  
  1745  		dst := &retval.RandomLeaf
  1746  		src := v.InnerQueryFragment.RandomLeaf
  1747  		var err error
  1748  		*dst, err = __marshalInnerQueryFragmentRandomLeafLeafContent(
  1749  			&src)
  1750  		if err != nil {
  1751  			return nil, fmt.Errorf(
  1752  				"Unable to marshal QueryFragment.InnerQueryFragment.RandomLeaf: %w", err)
  1753  		}
  1754  	}
  1755  	{
  1756  
  1757  		dst := &retval.OtherLeaf
  1758  		src := v.InnerQueryFragment.OtherLeaf
  1759  		var err error
  1760  		*dst, err = __marshalInnerQueryFragmentOtherLeafLeafContent(
  1761  			&src)
  1762  		if err != nil {
  1763  			return nil, fmt.Errorf(
  1764  				"Unable to marshal QueryFragment.InnerQueryFragment.OtherLeaf: %w", err)
  1765  		}
  1766  	}
  1767  	return &retval, nil
  1768  }
  1769  
  1770  // VideoFields includes the GraphQL fields of Video requested by the fragment VideoFields.
  1771  type VideoFields struct {
  1772  	// ID is documented in the Content interface.
  1773  	Id                 testutil.ID          `json:"id"`
  1774  	Name               string               `json:"name"`
  1775  	Url                string               `json:"url"`
  1776  	Duration           int                  `json:"duration"`
  1777  	Thumbnail          VideoFieldsThumbnail `json:"thumbnail"`
  1778  	ContentFieldsVideo `json:"-"`
  1779  }
  1780  
  1781  // GetId returns VideoFields.Id, and is useful for accessing the field via an interface.
  1782  func (v *VideoFields) GetId() testutil.ID { return v.Id }
  1783  
  1784  // GetName returns VideoFields.Name, and is useful for accessing the field via an interface.
  1785  func (v *VideoFields) GetName() string { return v.Name }
  1786  
  1787  // GetUrl returns VideoFields.Url, and is useful for accessing the field via an interface.
  1788  func (v *VideoFields) GetUrl() string { return v.Url }
  1789  
  1790  // GetDuration returns VideoFields.Duration, and is useful for accessing the field via an interface.
  1791  func (v *VideoFields) GetDuration() int { return v.Duration }
  1792  
  1793  // GetThumbnail returns VideoFields.Thumbnail, and is useful for accessing the field via an interface.
  1794  func (v *VideoFields) GetThumbnail() VideoFieldsThumbnail { return v.Thumbnail }
  1795  
  1796  func (v *VideoFields) UnmarshalJSON(b []byte) error {
  1797  
  1798  	if string(b) == "null" {
  1799  		return nil
  1800  	}
  1801  
  1802  	var firstPass struct {
  1803  		*VideoFields
  1804  		graphql.NoUnmarshalJSON
  1805  	}
  1806  	firstPass.VideoFields = v
  1807  
  1808  	err := json.Unmarshal(b, &firstPass)
  1809  	if err != nil {
  1810  		return err
  1811  	}
  1812  
  1813  	err = json.Unmarshal(
  1814  		b, &v.ContentFieldsVideo)
  1815  	if err != nil {
  1816  		return err
  1817  	}
  1818  	return nil
  1819  }
  1820  
  1821  type __premarshalVideoFields struct {
  1822  	Id testutil.ID `json:"id"`
  1823  
  1824  	Name string `json:"name"`
  1825  
  1826  	Url string `json:"url"`
  1827  
  1828  	Duration int `json:"duration"`
  1829  
  1830  	Thumbnail VideoFieldsThumbnail `json:"thumbnail"`
  1831  }
  1832  
  1833  func (v *VideoFields) MarshalJSON() ([]byte, error) {
  1834  	premarshaled, err := v.__premarshalJSON()
  1835  	if err != nil {
  1836  		return nil, err
  1837  	}
  1838  	return json.Marshal(premarshaled)
  1839  }
  1840  
  1841  func (v *VideoFields) __premarshalJSON() (*__premarshalVideoFields, error) {
  1842  	var retval __premarshalVideoFields
  1843  
  1844  	retval.Id = v.Id
  1845  	retval.Name = v.Name
  1846  	retval.Url = v.Url
  1847  	retval.Duration = v.Duration
  1848  	retval.Thumbnail = v.Thumbnail
  1849  	return &retval, nil
  1850  }
  1851  
  1852  // VideoFieldsThumbnail includes the requested fields of the GraphQL type Thumbnail.
  1853  type VideoFieldsThumbnail struct {
  1854  	Id testutil.ID `json:"id"`
  1855  }
  1856  
  1857  // GetId returns VideoFieldsThumbnail.Id, and is useful for accessing the field via an interface.
  1858  func (v *VideoFieldsThumbnail) GetId() testutil.ID { return v.Id }
  1859  
  1860  func ComplexNamedFragments(
  1861  	client graphql.Client,
  1862  ) (*ComplexNamedFragmentsResponse, error) {
  1863  	req := &graphql.Request{
  1864  		OpName: "ComplexNamedFragments",
  1865  		Query: `
  1866  query ComplexNamedFragments {
  1867  	... on Query {
  1868  		... QueryFragment
  1869  	}
  1870  }
  1871  fragment QueryFragment on Query {
  1872  	... InnerQueryFragment
  1873  }
  1874  fragment InnerQueryFragment on Query {
  1875  	randomItem {
  1876  		__typename
  1877  		id
  1878  		name
  1879  		... VideoFields
  1880  		... ContentFields
  1881  	}
  1882  	randomLeaf {
  1883  		__typename
  1884  		... VideoFields
  1885  		... MoreVideoFields
  1886  		... ContentFields
  1887  	}
  1888  	otherLeaf: randomLeaf {
  1889  		__typename
  1890  		... on Video {
  1891  			... MoreVideoFields
  1892  			... ContentFields
  1893  		}
  1894  		... ContentFields
  1895  	}
  1896  }
  1897  fragment VideoFields on Video {
  1898  	id
  1899  	name
  1900  	url
  1901  	duration
  1902  	thumbnail {
  1903  		id
  1904  	}
  1905  	... ContentFields
  1906  }
  1907  fragment ContentFields on Content {
  1908  	name
  1909  	url
  1910  }
  1911  fragment MoreVideoFields on Video {
  1912  	id
  1913  	parent {
  1914  		name
  1915  		url
  1916  		... ContentFields
  1917  		children {
  1918  			__typename
  1919  			... VideoFields
  1920  		}
  1921  	}
  1922  }
  1923  `,
  1924  	}
  1925  	var err error
  1926  
  1927  	var data ComplexNamedFragmentsResponse
  1928  	resp := &graphql.Response{Data: &data}
  1929  
  1930  	err = client.MakeRequest(
  1931  		nil,
  1932  		req,
  1933  		resp,
  1934  	)
  1935  
  1936  	return &data, err
  1937  }
  1938