github.com/Desuuuu/genqlient@v0.5.3/generate/testdata/snapshots/TestGenerate-InterfaceNoFragments.graphql-InterfaceNoFragments.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  // InterfaceNoFragmentsQueryRandomItemArticle includes the requested fields of the GraphQL type Article.
    14  type InterfaceNoFragmentsQueryRandomItemArticle struct {
    15  	Typename string `json:"__typename"`
    16  	// ID is the identifier of the content.
    17  	Id   testutil.ID `json:"id"`
    18  	Name string      `json:"name"`
    19  }
    20  
    21  // GetTypename returns InterfaceNoFragmentsQueryRandomItemArticle.Typename, and is useful for accessing the field via an interface.
    22  func (v *InterfaceNoFragmentsQueryRandomItemArticle) GetTypename() string { return v.Typename }
    23  
    24  // GetId returns InterfaceNoFragmentsQueryRandomItemArticle.Id, and is useful for accessing the field via an interface.
    25  func (v *InterfaceNoFragmentsQueryRandomItemArticle) GetId() testutil.ID { return v.Id }
    26  
    27  // GetName returns InterfaceNoFragmentsQueryRandomItemArticle.Name, and is useful for accessing the field via an interface.
    28  func (v *InterfaceNoFragmentsQueryRandomItemArticle) GetName() string { return v.Name }
    29  
    30  // InterfaceNoFragmentsQueryRandomItemContent includes the requested fields of the GraphQL interface Content.
    31  //
    32  // InterfaceNoFragmentsQueryRandomItemContent is implemented by the following types:
    33  // InterfaceNoFragmentsQueryRandomItemArticle
    34  // InterfaceNoFragmentsQueryRandomItemVideo
    35  // InterfaceNoFragmentsQueryRandomItemTopic
    36  // The GraphQL type's documentation follows.
    37  //
    38  // Content is implemented by various types like Article, Video, and Topic.
    39  type InterfaceNoFragmentsQueryRandomItemContent interface {
    40  	implementsGraphQLInterfaceInterfaceNoFragmentsQueryRandomItemContent()
    41  	// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
    42  	GetTypename() string
    43  	// GetId returns the interface-field "id" from its implementation.
    44  	// The GraphQL interface field's documentation follows.
    45  	//
    46  	// ID is the identifier of the content.
    47  	GetId() testutil.ID
    48  	// GetName returns the interface-field "name" from its implementation.
    49  	GetName() string
    50  	GetContentArticle() (*InterfaceNoFragmentsQueryRandomItemArticle, bool)
    51  	GetContentVideo() (*InterfaceNoFragmentsQueryRandomItemVideo, bool)
    52  	GetContentTopic() (*InterfaceNoFragmentsQueryRandomItemTopic, bool)
    53  }
    54  
    55  func (v *InterfaceNoFragmentsQueryRandomItemArticle) implementsGraphQLInterfaceInterfaceNoFragmentsQueryRandomItemContent() {
    56  }
    57  func (v *InterfaceNoFragmentsQueryRandomItemArticle) GetContentArticle() (*InterfaceNoFragmentsQueryRandomItemArticle, bool) {
    58  	return v, true
    59  }
    60  func (v *InterfaceNoFragmentsQueryRandomItemArticle) GetContentVideo() (*InterfaceNoFragmentsQueryRandomItemVideo, bool) {
    61  	return nil, false
    62  }
    63  func (v *InterfaceNoFragmentsQueryRandomItemArticle) GetContentTopic() (*InterfaceNoFragmentsQueryRandomItemTopic, bool) {
    64  	return nil, false
    65  }
    66  func (v *InterfaceNoFragmentsQueryRandomItemVideo) implementsGraphQLInterfaceInterfaceNoFragmentsQueryRandomItemContent() {
    67  }
    68  func (v *InterfaceNoFragmentsQueryRandomItemVideo) GetContentArticle() (*InterfaceNoFragmentsQueryRandomItemArticle, bool) {
    69  	return nil, false
    70  }
    71  func (v *InterfaceNoFragmentsQueryRandomItemVideo) GetContentVideo() (*InterfaceNoFragmentsQueryRandomItemVideo, bool) {
    72  	return v, true
    73  }
    74  func (v *InterfaceNoFragmentsQueryRandomItemVideo) GetContentTopic() (*InterfaceNoFragmentsQueryRandomItemTopic, bool) {
    75  	return nil, false
    76  }
    77  func (v *InterfaceNoFragmentsQueryRandomItemTopic) implementsGraphQLInterfaceInterfaceNoFragmentsQueryRandomItemContent() {
    78  }
    79  func (v *InterfaceNoFragmentsQueryRandomItemTopic) GetContentArticle() (*InterfaceNoFragmentsQueryRandomItemArticle, bool) {
    80  	return nil, false
    81  }
    82  func (v *InterfaceNoFragmentsQueryRandomItemTopic) GetContentVideo() (*InterfaceNoFragmentsQueryRandomItemVideo, bool) {
    83  	return nil, false
    84  }
    85  func (v *InterfaceNoFragmentsQueryRandomItemTopic) GetContentTopic() (*InterfaceNoFragmentsQueryRandomItemTopic, bool) {
    86  	return v, true
    87  }
    88  
    89  func __unmarshalInterfaceNoFragmentsQueryRandomItemContent(b []byte, v *InterfaceNoFragmentsQueryRandomItemContent) error {
    90  	if string(b) == "null" {
    91  		return nil
    92  	}
    93  
    94  	var tn struct {
    95  		TypeName string `json:"__typename"`
    96  	}
    97  	err := json.Unmarshal(b, &tn)
    98  	if err != nil {
    99  		return err
   100  	}
   101  
   102  	switch tn.TypeName {
   103  	case "Article":
   104  		*v = new(InterfaceNoFragmentsQueryRandomItemArticle)
   105  		return json.Unmarshal(b, *v)
   106  	case "Video":
   107  		*v = new(InterfaceNoFragmentsQueryRandomItemVideo)
   108  		return json.Unmarshal(b, *v)
   109  	case "Topic":
   110  		*v = new(InterfaceNoFragmentsQueryRandomItemTopic)
   111  		return json.Unmarshal(b, *v)
   112  	case "":
   113  		return fmt.Errorf(
   114  			"response was missing Content.__typename")
   115  	default:
   116  		return fmt.Errorf(
   117  			`unexpected concrete type for InterfaceNoFragmentsQueryRandomItemContent: "%v"`, tn.TypeName)
   118  	}
   119  }
   120  
   121  func __marshalInterfaceNoFragmentsQueryRandomItemContent(v *InterfaceNoFragmentsQueryRandomItemContent) ([]byte, error) {
   122  
   123  	var typename string
   124  	switch v := (*v).(type) {
   125  	case *InterfaceNoFragmentsQueryRandomItemArticle:
   126  		typename = "Article"
   127  
   128  		result := struct {
   129  			TypeName string `json:"__typename"`
   130  			*InterfaceNoFragmentsQueryRandomItemArticle
   131  		}{typename, v}
   132  		return json.Marshal(result)
   133  	case *InterfaceNoFragmentsQueryRandomItemVideo:
   134  		typename = "Video"
   135  
   136  		result := struct {
   137  			TypeName string `json:"__typename"`
   138  			*InterfaceNoFragmentsQueryRandomItemVideo
   139  		}{typename, v}
   140  		return json.Marshal(result)
   141  	case *InterfaceNoFragmentsQueryRandomItemTopic:
   142  		typename = "Topic"
   143  
   144  		result := struct {
   145  			TypeName string `json:"__typename"`
   146  			*InterfaceNoFragmentsQueryRandomItemTopic
   147  		}{typename, v}
   148  		return json.Marshal(result)
   149  	case nil:
   150  		return []byte("null"), nil
   151  	default:
   152  		return nil, fmt.Errorf(
   153  			`unexpected concrete type for InterfaceNoFragmentsQueryRandomItemContent: "%T"`, v)
   154  	}
   155  }
   156  
   157  // InterfaceNoFragmentsQueryRandomItemTopic includes the requested fields of the GraphQL type Topic.
   158  type InterfaceNoFragmentsQueryRandomItemTopic struct {
   159  	Typename string `json:"__typename"`
   160  	// ID is the identifier of the content.
   161  	Id   testutil.ID `json:"id"`
   162  	Name string      `json:"name"`
   163  }
   164  
   165  // GetTypename returns InterfaceNoFragmentsQueryRandomItemTopic.Typename, and is useful for accessing the field via an interface.
   166  func (v *InterfaceNoFragmentsQueryRandomItemTopic) GetTypename() string { return v.Typename }
   167  
   168  // GetId returns InterfaceNoFragmentsQueryRandomItemTopic.Id, and is useful for accessing the field via an interface.
   169  func (v *InterfaceNoFragmentsQueryRandomItemTopic) GetId() testutil.ID { return v.Id }
   170  
   171  // GetName returns InterfaceNoFragmentsQueryRandomItemTopic.Name, and is useful for accessing the field via an interface.
   172  func (v *InterfaceNoFragmentsQueryRandomItemTopic) GetName() string { return v.Name }
   173  
   174  // InterfaceNoFragmentsQueryRandomItemVideo includes the requested fields of the GraphQL type Video.
   175  type InterfaceNoFragmentsQueryRandomItemVideo struct {
   176  	Typename string `json:"__typename"`
   177  	// ID is the identifier of the content.
   178  	Id   testutil.ID `json:"id"`
   179  	Name string      `json:"name"`
   180  }
   181  
   182  // GetTypename returns InterfaceNoFragmentsQueryRandomItemVideo.Typename, and is useful for accessing the field via an interface.
   183  func (v *InterfaceNoFragmentsQueryRandomItemVideo) GetTypename() string { return v.Typename }
   184  
   185  // GetId returns InterfaceNoFragmentsQueryRandomItemVideo.Id, and is useful for accessing the field via an interface.
   186  func (v *InterfaceNoFragmentsQueryRandomItemVideo) GetId() testutil.ID { return v.Id }
   187  
   188  // GetName returns InterfaceNoFragmentsQueryRandomItemVideo.Name, and is useful for accessing the field via an interface.
   189  func (v *InterfaceNoFragmentsQueryRandomItemVideo) GetName() string { return v.Name }
   190  
   191  // InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle includes the requested fields of the GraphQL type Article.
   192  type InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle struct {
   193  	Typename string `json:"__typename"`
   194  	// ID is the identifier of the content.
   195  	Id   testutil.ID `json:"id"`
   196  	Name string      `json:"name"`
   197  }
   198  
   199  // GetTypename returns InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle.Typename, and is useful for accessing the field via an interface.
   200  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle) GetTypename() string {
   201  	return v.Typename
   202  }
   203  
   204  // GetId returns InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle.Id, and is useful for accessing the field via an interface.
   205  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle) GetId() testutil.ID { return v.Id }
   206  
   207  // GetName returns InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle.Name, and is useful for accessing the field via an interface.
   208  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle) GetName() string { return v.Name }
   209  
   210  // InterfaceNoFragmentsQueryRandomItemWithTypeNameContent includes the requested fields of the GraphQL interface Content.
   211  //
   212  // InterfaceNoFragmentsQueryRandomItemWithTypeNameContent is implemented by the following types:
   213  // InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle
   214  // InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo
   215  // InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic
   216  // The GraphQL type's documentation follows.
   217  //
   218  // Content is implemented by various types like Article, Video, and Topic.
   219  type InterfaceNoFragmentsQueryRandomItemWithTypeNameContent interface {
   220  	implementsGraphQLInterfaceInterfaceNoFragmentsQueryRandomItemWithTypeNameContent()
   221  	// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
   222  	GetTypename() string
   223  	// GetId returns the interface-field "id" from its implementation.
   224  	// The GraphQL interface field's documentation follows.
   225  	//
   226  	// ID is the identifier of the content.
   227  	GetId() testutil.ID
   228  	// GetName returns the interface-field "name" from its implementation.
   229  	GetName() string
   230  	GetContentArticle() (*InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle, bool)
   231  	GetContentVideo() (*InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo, bool)
   232  	GetContentTopic() (*InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic, bool)
   233  }
   234  
   235  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle) implementsGraphQLInterfaceInterfaceNoFragmentsQueryRandomItemWithTypeNameContent() {
   236  }
   237  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle) GetContentArticle() (*InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle, bool) {
   238  	return v, true
   239  }
   240  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle) GetContentVideo() (*InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo, bool) {
   241  	return nil, false
   242  }
   243  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle) GetContentTopic() (*InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic, bool) {
   244  	return nil, false
   245  }
   246  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo) implementsGraphQLInterfaceInterfaceNoFragmentsQueryRandomItemWithTypeNameContent() {
   247  }
   248  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo) GetContentArticle() (*InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle, bool) {
   249  	return nil, false
   250  }
   251  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo) GetContentVideo() (*InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo, bool) {
   252  	return v, true
   253  }
   254  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo) GetContentTopic() (*InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic, bool) {
   255  	return nil, false
   256  }
   257  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic) implementsGraphQLInterfaceInterfaceNoFragmentsQueryRandomItemWithTypeNameContent() {
   258  }
   259  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic) GetContentArticle() (*InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle, bool) {
   260  	return nil, false
   261  }
   262  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic) GetContentVideo() (*InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo, bool) {
   263  	return nil, false
   264  }
   265  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic) GetContentTopic() (*InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic, bool) {
   266  	return v, true
   267  }
   268  
   269  func __unmarshalInterfaceNoFragmentsQueryRandomItemWithTypeNameContent(b []byte, v *InterfaceNoFragmentsQueryRandomItemWithTypeNameContent) error {
   270  	if string(b) == "null" {
   271  		return nil
   272  	}
   273  
   274  	var tn struct {
   275  		TypeName string `json:"__typename"`
   276  	}
   277  	err := json.Unmarshal(b, &tn)
   278  	if err != nil {
   279  		return err
   280  	}
   281  
   282  	switch tn.TypeName {
   283  	case "Article":
   284  		*v = new(InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle)
   285  		return json.Unmarshal(b, *v)
   286  	case "Video":
   287  		*v = new(InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo)
   288  		return json.Unmarshal(b, *v)
   289  	case "Topic":
   290  		*v = new(InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic)
   291  		return json.Unmarshal(b, *v)
   292  	case "":
   293  		return fmt.Errorf(
   294  			"response was missing Content.__typename")
   295  	default:
   296  		return fmt.Errorf(
   297  			`unexpected concrete type for InterfaceNoFragmentsQueryRandomItemWithTypeNameContent: "%v"`, tn.TypeName)
   298  	}
   299  }
   300  
   301  func __marshalInterfaceNoFragmentsQueryRandomItemWithTypeNameContent(v *InterfaceNoFragmentsQueryRandomItemWithTypeNameContent) ([]byte, error) {
   302  
   303  	var typename string
   304  	switch v := (*v).(type) {
   305  	case *InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle:
   306  		typename = "Article"
   307  
   308  		result := struct {
   309  			TypeName string `json:"__typename"`
   310  			*InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle
   311  		}{typename, v}
   312  		return json.Marshal(result)
   313  	case *InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo:
   314  		typename = "Video"
   315  
   316  		result := struct {
   317  			TypeName string `json:"__typename"`
   318  			*InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo
   319  		}{typename, v}
   320  		return json.Marshal(result)
   321  	case *InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic:
   322  		typename = "Topic"
   323  
   324  		result := struct {
   325  			TypeName string `json:"__typename"`
   326  			*InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic
   327  		}{typename, v}
   328  		return json.Marshal(result)
   329  	case nil:
   330  		return []byte("null"), nil
   331  	default:
   332  		return nil, fmt.Errorf(
   333  			`unexpected concrete type for InterfaceNoFragmentsQueryRandomItemWithTypeNameContent: "%T"`, v)
   334  	}
   335  }
   336  
   337  // InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic includes the requested fields of the GraphQL type Topic.
   338  type InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic struct {
   339  	Typename string `json:"__typename"`
   340  	// ID is the identifier of the content.
   341  	Id   testutil.ID `json:"id"`
   342  	Name string      `json:"name"`
   343  }
   344  
   345  // GetTypename returns InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic.Typename, and is useful for accessing the field via an interface.
   346  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic) GetTypename() string {
   347  	return v.Typename
   348  }
   349  
   350  // GetId returns InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic.Id, and is useful for accessing the field via an interface.
   351  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic) GetId() testutil.ID { return v.Id }
   352  
   353  // GetName returns InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic.Name, and is useful for accessing the field via an interface.
   354  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic) GetName() string { return v.Name }
   355  
   356  // InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo includes the requested fields of the GraphQL type Video.
   357  type InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo struct {
   358  	Typename string `json:"__typename"`
   359  	// ID is the identifier of the content.
   360  	Id   testutil.ID `json:"id"`
   361  	Name string      `json:"name"`
   362  }
   363  
   364  // GetTypename returns InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo.Typename, and is useful for accessing the field via an interface.
   365  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo) GetTypename() string {
   366  	return v.Typename
   367  }
   368  
   369  // GetId returns InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo.Id, and is useful for accessing the field via an interface.
   370  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo) GetId() testutil.ID { return v.Id }
   371  
   372  // GetName returns InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo.Name, and is useful for accessing the field via an interface.
   373  func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo) GetName() string { return v.Name }
   374  
   375  // InterfaceNoFragmentsQueryResponse is returned by InterfaceNoFragmentsQuery on success.
   376  type InterfaceNoFragmentsQueryResponse struct {
   377  	Root                   InterfaceNoFragmentsQueryRootTopic                     `json:"root"`
   378  	RandomItem             InterfaceNoFragmentsQueryRandomItemContent             `json:"-"`
   379  	RandomItemWithTypeName InterfaceNoFragmentsQueryRandomItemWithTypeNameContent `json:"-"`
   380  	WithPointer            *InterfaceNoFragmentsQueryWithPointerContent           `json:"-"`
   381  }
   382  
   383  // GetRoot returns InterfaceNoFragmentsQueryResponse.Root, and is useful for accessing the field via an interface.
   384  func (v *InterfaceNoFragmentsQueryResponse) GetRoot() InterfaceNoFragmentsQueryRootTopic {
   385  	return v.Root
   386  }
   387  
   388  // GetRandomItem returns InterfaceNoFragmentsQueryResponse.RandomItem, and is useful for accessing the field via an interface.
   389  func (v *InterfaceNoFragmentsQueryResponse) GetRandomItem() InterfaceNoFragmentsQueryRandomItemContent {
   390  	return v.RandomItem
   391  }
   392  
   393  // GetRandomItemWithTypeName returns InterfaceNoFragmentsQueryResponse.RandomItemWithTypeName, and is useful for accessing the field via an interface.
   394  func (v *InterfaceNoFragmentsQueryResponse) GetRandomItemWithTypeName() InterfaceNoFragmentsQueryRandomItemWithTypeNameContent {
   395  	return v.RandomItemWithTypeName
   396  }
   397  
   398  // GetWithPointer returns InterfaceNoFragmentsQueryResponse.WithPointer, and is useful for accessing the field via an interface.
   399  func (v *InterfaceNoFragmentsQueryResponse) GetWithPointer() *InterfaceNoFragmentsQueryWithPointerContent {
   400  	return v.WithPointer
   401  }
   402  
   403  func (v *InterfaceNoFragmentsQueryResponse) UnmarshalJSON(b []byte) error {
   404  
   405  	if string(b) == "null" {
   406  		return nil
   407  	}
   408  
   409  	var firstPass struct {
   410  		*InterfaceNoFragmentsQueryResponse
   411  		RandomItem             json.RawMessage `json:"randomItem"`
   412  		RandomItemWithTypeName json.RawMessage `json:"randomItemWithTypeName"`
   413  		WithPointer            json.RawMessage `json:"withPointer"`
   414  		graphql.NoUnmarshalJSON
   415  	}
   416  	firstPass.InterfaceNoFragmentsQueryResponse = v
   417  
   418  	err := json.Unmarshal(b, &firstPass)
   419  	if err != nil {
   420  		return err
   421  	}
   422  
   423  	{
   424  		dst := &v.RandomItem
   425  		src := firstPass.RandomItem
   426  		if len(src) != 0 && string(src) != "null" {
   427  			err = __unmarshalInterfaceNoFragmentsQueryRandomItemContent(
   428  				src, dst)
   429  			if err != nil {
   430  				return fmt.Errorf(
   431  					"Unable to unmarshal InterfaceNoFragmentsQueryResponse.RandomItem: %w", err)
   432  			}
   433  		}
   434  	}
   435  
   436  	{
   437  		dst := &v.RandomItemWithTypeName
   438  		src := firstPass.RandomItemWithTypeName
   439  		if len(src) != 0 && string(src) != "null" {
   440  			err = __unmarshalInterfaceNoFragmentsQueryRandomItemWithTypeNameContent(
   441  				src, dst)
   442  			if err != nil {
   443  				return fmt.Errorf(
   444  					"Unable to unmarshal InterfaceNoFragmentsQueryResponse.RandomItemWithTypeName: %w", err)
   445  			}
   446  		}
   447  	}
   448  
   449  	{
   450  		dst := &v.WithPointer
   451  		src := firstPass.WithPointer
   452  		if len(src) != 0 && string(src) != "null" {
   453  			*dst = new(InterfaceNoFragmentsQueryWithPointerContent)
   454  			err = __unmarshalInterfaceNoFragmentsQueryWithPointerContent(
   455  				src, *dst)
   456  			if err != nil {
   457  				return fmt.Errorf(
   458  					"Unable to unmarshal InterfaceNoFragmentsQueryResponse.WithPointer: %w", err)
   459  			}
   460  		}
   461  	}
   462  	return nil
   463  }
   464  
   465  type __premarshalInterfaceNoFragmentsQueryResponse struct {
   466  	Root InterfaceNoFragmentsQueryRootTopic `json:"root"`
   467  
   468  	RandomItem json.RawMessage `json:"randomItem"`
   469  
   470  	RandomItemWithTypeName json.RawMessage `json:"randomItemWithTypeName"`
   471  
   472  	WithPointer json.RawMessage `json:"withPointer"`
   473  }
   474  
   475  func (v *InterfaceNoFragmentsQueryResponse) MarshalJSON() ([]byte, error) {
   476  	premarshaled, err := v.__premarshalJSON()
   477  	if err != nil {
   478  		return nil, err
   479  	}
   480  	return json.Marshal(premarshaled)
   481  }
   482  
   483  func (v *InterfaceNoFragmentsQueryResponse) __premarshalJSON() (*__premarshalInterfaceNoFragmentsQueryResponse, error) {
   484  	var retval __premarshalInterfaceNoFragmentsQueryResponse
   485  
   486  	retval.Root = v.Root
   487  	{
   488  
   489  		dst := &retval.RandomItem
   490  		src := v.RandomItem
   491  		var err error
   492  		*dst, err = __marshalInterfaceNoFragmentsQueryRandomItemContent(
   493  			&src)
   494  		if err != nil {
   495  			return nil, fmt.Errorf(
   496  				"Unable to marshal InterfaceNoFragmentsQueryResponse.RandomItem: %w", err)
   497  		}
   498  	}
   499  	{
   500  
   501  		dst := &retval.RandomItemWithTypeName
   502  		src := v.RandomItemWithTypeName
   503  		var err error
   504  		*dst, err = __marshalInterfaceNoFragmentsQueryRandomItemWithTypeNameContent(
   505  			&src)
   506  		if err != nil {
   507  			return nil, fmt.Errorf(
   508  				"Unable to marshal InterfaceNoFragmentsQueryResponse.RandomItemWithTypeName: %w", err)
   509  		}
   510  	}
   511  	{
   512  
   513  		dst := &retval.WithPointer
   514  		src := v.WithPointer
   515  		if src != nil {
   516  			var err error
   517  			*dst, err = __marshalInterfaceNoFragmentsQueryWithPointerContent(
   518  				src)
   519  			if err != nil {
   520  				return nil, fmt.Errorf(
   521  					"Unable to marshal InterfaceNoFragmentsQueryResponse.WithPointer: %w", err)
   522  			}
   523  		}
   524  	}
   525  	return &retval, nil
   526  }
   527  
   528  // InterfaceNoFragmentsQueryRootTopic includes the requested fields of the GraphQL type Topic.
   529  type InterfaceNoFragmentsQueryRootTopic struct {
   530  	// ID is documented in the Content interface.
   531  	Id   testutil.ID `json:"id"`
   532  	Name string      `json:"name"`
   533  }
   534  
   535  // GetId returns InterfaceNoFragmentsQueryRootTopic.Id, and is useful for accessing the field via an interface.
   536  func (v *InterfaceNoFragmentsQueryRootTopic) GetId() testutil.ID { return v.Id }
   537  
   538  // GetName returns InterfaceNoFragmentsQueryRootTopic.Name, and is useful for accessing the field via an interface.
   539  func (v *InterfaceNoFragmentsQueryRootTopic) GetName() string { return v.Name }
   540  
   541  // InterfaceNoFragmentsQueryWithPointerArticle includes the requested fields of the GraphQL type Article.
   542  type InterfaceNoFragmentsQueryWithPointerArticle struct {
   543  	Typename string `json:"__typename"`
   544  	// ID is the identifier of the content.
   545  	Id   *testutil.ID `json:"id"`
   546  	Name *string      `json:"name"`
   547  }
   548  
   549  // GetTypename returns InterfaceNoFragmentsQueryWithPointerArticle.Typename, and is useful for accessing the field via an interface.
   550  func (v *InterfaceNoFragmentsQueryWithPointerArticle) GetTypename() string { return v.Typename }
   551  
   552  // GetId returns InterfaceNoFragmentsQueryWithPointerArticle.Id, and is useful for accessing the field via an interface.
   553  func (v *InterfaceNoFragmentsQueryWithPointerArticle) GetId() *testutil.ID { return v.Id }
   554  
   555  // GetName returns InterfaceNoFragmentsQueryWithPointerArticle.Name, and is useful for accessing the field via an interface.
   556  func (v *InterfaceNoFragmentsQueryWithPointerArticle) GetName() *string { return v.Name }
   557  
   558  // InterfaceNoFragmentsQueryWithPointerContent includes the requested fields of the GraphQL interface Content.
   559  //
   560  // InterfaceNoFragmentsQueryWithPointerContent is implemented by the following types:
   561  // InterfaceNoFragmentsQueryWithPointerArticle
   562  // InterfaceNoFragmentsQueryWithPointerVideo
   563  // InterfaceNoFragmentsQueryWithPointerTopic
   564  // The GraphQL type's documentation follows.
   565  //
   566  // Content is implemented by various types like Article, Video, and Topic.
   567  type InterfaceNoFragmentsQueryWithPointerContent interface {
   568  	implementsGraphQLInterfaceInterfaceNoFragmentsQueryWithPointerContent()
   569  	// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
   570  	GetTypename() string
   571  	// GetId returns the interface-field "id" from its implementation.
   572  	// The GraphQL interface field's documentation follows.
   573  	//
   574  	// ID is the identifier of the content.
   575  	GetId() *testutil.ID
   576  	// GetName returns the interface-field "name" from its implementation.
   577  	GetName() *string
   578  	GetContentArticle() (*InterfaceNoFragmentsQueryWithPointerArticle, bool)
   579  	GetContentVideo() (*InterfaceNoFragmentsQueryWithPointerVideo, bool)
   580  	GetContentTopic() (*InterfaceNoFragmentsQueryWithPointerTopic, bool)
   581  }
   582  
   583  func (v *InterfaceNoFragmentsQueryWithPointerArticle) implementsGraphQLInterfaceInterfaceNoFragmentsQueryWithPointerContent() {
   584  }
   585  func (v *InterfaceNoFragmentsQueryWithPointerArticle) GetContentArticle() (*InterfaceNoFragmentsQueryWithPointerArticle, bool) {
   586  	return v, true
   587  }
   588  func (v *InterfaceNoFragmentsQueryWithPointerArticle) GetContentVideo() (*InterfaceNoFragmentsQueryWithPointerVideo, bool) {
   589  	return nil, false
   590  }
   591  func (v *InterfaceNoFragmentsQueryWithPointerArticle) GetContentTopic() (*InterfaceNoFragmentsQueryWithPointerTopic, bool) {
   592  	return nil, false
   593  }
   594  func (v *InterfaceNoFragmentsQueryWithPointerVideo) implementsGraphQLInterfaceInterfaceNoFragmentsQueryWithPointerContent() {
   595  }
   596  func (v *InterfaceNoFragmentsQueryWithPointerVideo) GetContentArticle() (*InterfaceNoFragmentsQueryWithPointerArticle, bool) {
   597  	return nil, false
   598  }
   599  func (v *InterfaceNoFragmentsQueryWithPointerVideo) GetContentVideo() (*InterfaceNoFragmentsQueryWithPointerVideo, bool) {
   600  	return v, true
   601  }
   602  func (v *InterfaceNoFragmentsQueryWithPointerVideo) GetContentTopic() (*InterfaceNoFragmentsQueryWithPointerTopic, bool) {
   603  	return nil, false
   604  }
   605  func (v *InterfaceNoFragmentsQueryWithPointerTopic) implementsGraphQLInterfaceInterfaceNoFragmentsQueryWithPointerContent() {
   606  }
   607  func (v *InterfaceNoFragmentsQueryWithPointerTopic) GetContentArticle() (*InterfaceNoFragmentsQueryWithPointerArticle, bool) {
   608  	return nil, false
   609  }
   610  func (v *InterfaceNoFragmentsQueryWithPointerTopic) GetContentVideo() (*InterfaceNoFragmentsQueryWithPointerVideo, bool) {
   611  	return nil, false
   612  }
   613  func (v *InterfaceNoFragmentsQueryWithPointerTopic) GetContentTopic() (*InterfaceNoFragmentsQueryWithPointerTopic, bool) {
   614  	return v, true
   615  }
   616  
   617  func __unmarshalInterfaceNoFragmentsQueryWithPointerContent(b []byte, v *InterfaceNoFragmentsQueryWithPointerContent) error {
   618  	if string(b) == "null" {
   619  		return nil
   620  	}
   621  
   622  	var tn struct {
   623  		TypeName string `json:"__typename"`
   624  	}
   625  	err := json.Unmarshal(b, &tn)
   626  	if err != nil {
   627  		return err
   628  	}
   629  
   630  	switch tn.TypeName {
   631  	case "Article":
   632  		*v = new(InterfaceNoFragmentsQueryWithPointerArticle)
   633  		return json.Unmarshal(b, *v)
   634  	case "Video":
   635  		*v = new(InterfaceNoFragmentsQueryWithPointerVideo)
   636  		return json.Unmarshal(b, *v)
   637  	case "Topic":
   638  		*v = new(InterfaceNoFragmentsQueryWithPointerTopic)
   639  		return json.Unmarshal(b, *v)
   640  	case "":
   641  		return fmt.Errorf(
   642  			"response was missing Content.__typename")
   643  	default:
   644  		return fmt.Errorf(
   645  			`unexpected concrete type for InterfaceNoFragmentsQueryWithPointerContent: "%v"`, tn.TypeName)
   646  	}
   647  }
   648  
   649  func __marshalInterfaceNoFragmentsQueryWithPointerContent(v *InterfaceNoFragmentsQueryWithPointerContent) ([]byte, error) {
   650  
   651  	var typename string
   652  	switch v := (*v).(type) {
   653  	case *InterfaceNoFragmentsQueryWithPointerArticle:
   654  		typename = "Article"
   655  
   656  		result := struct {
   657  			TypeName string `json:"__typename"`
   658  			*InterfaceNoFragmentsQueryWithPointerArticle
   659  		}{typename, v}
   660  		return json.Marshal(result)
   661  	case *InterfaceNoFragmentsQueryWithPointerVideo:
   662  		typename = "Video"
   663  
   664  		result := struct {
   665  			TypeName string `json:"__typename"`
   666  			*InterfaceNoFragmentsQueryWithPointerVideo
   667  		}{typename, v}
   668  		return json.Marshal(result)
   669  	case *InterfaceNoFragmentsQueryWithPointerTopic:
   670  		typename = "Topic"
   671  
   672  		result := struct {
   673  			TypeName string `json:"__typename"`
   674  			*InterfaceNoFragmentsQueryWithPointerTopic
   675  		}{typename, v}
   676  		return json.Marshal(result)
   677  	case nil:
   678  		return []byte("null"), nil
   679  	default:
   680  		return nil, fmt.Errorf(
   681  			`unexpected concrete type for InterfaceNoFragmentsQueryWithPointerContent: "%T"`, v)
   682  	}
   683  }
   684  
   685  // InterfaceNoFragmentsQueryWithPointerTopic includes the requested fields of the GraphQL type Topic.
   686  type InterfaceNoFragmentsQueryWithPointerTopic struct {
   687  	Typename string `json:"__typename"`
   688  	// ID is the identifier of the content.
   689  	Id   *testutil.ID `json:"id"`
   690  	Name *string      `json:"name"`
   691  }
   692  
   693  // GetTypename returns InterfaceNoFragmentsQueryWithPointerTopic.Typename, and is useful for accessing the field via an interface.
   694  func (v *InterfaceNoFragmentsQueryWithPointerTopic) GetTypename() string { return v.Typename }
   695  
   696  // GetId returns InterfaceNoFragmentsQueryWithPointerTopic.Id, and is useful for accessing the field via an interface.
   697  func (v *InterfaceNoFragmentsQueryWithPointerTopic) GetId() *testutil.ID { return v.Id }
   698  
   699  // GetName returns InterfaceNoFragmentsQueryWithPointerTopic.Name, and is useful for accessing the field via an interface.
   700  func (v *InterfaceNoFragmentsQueryWithPointerTopic) GetName() *string { return v.Name }
   701  
   702  // InterfaceNoFragmentsQueryWithPointerVideo includes the requested fields of the GraphQL type Video.
   703  type InterfaceNoFragmentsQueryWithPointerVideo struct {
   704  	Typename string `json:"__typename"`
   705  	// ID is the identifier of the content.
   706  	Id   *testutil.ID `json:"id"`
   707  	Name *string      `json:"name"`
   708  }
   709  
   710  // GetTypename returns InterfaceNoFragmentsQueryWithPointerVideo.Typename, and is useful for accessing the field via an interface.
   711  func (v *InterfaceNoFragmentsQueryWithPointerVideo) GetTypename() string { return v.Typename }
   712  
   713  // GetId returns InterfaceNoFragmentsQueryWithPointerVideo.Id, and is useful for accessing the field via an interface.
   714  func (v *InterfaceNoFragmentsQueryWithPointerVideo) GetId() *testutil.ID { return v.Id }
   715  
   716  // GetName returns InterfaceNoFragmentsQueryWithPointerVideo.Name, and is useful for accessing the field via an interface.
   717  func (v *InterfaceNoFragmentsQueryWithPointerVideo) GetName() *string { return v.Name }
   718  
   719  func InterfaceNoFragmentsQuery(
   720  	client graphql.Client,
   721  ) (*InterfaceNoFragmentsQueryResponse, error) {
   722  	req := &graphql.Request{
   723  		OpName: "InterfaceNoFragmentsQuery",
   724  		Query: `
   725  query InterfaceNoFragmentsQuery {
   726  	root {
   727  		id
   728  		name
   729  	}
   730  	randomItem {
   731  		__typename
   732  		id
   733  		name
   734  	}
   735  	randomItemWithTypeName: randomItem {
   736  		__typename
   737  		id
   738  		name
   739  	}
   740  	withPointer: randomItem {
   741  		__typename
   742  		id
   743  		name
   744  	}
   745  }
   746  `,
   747  	}
   748  	var err error
   749  
   750  	var data InterfaceNoFragmentsQueryResponse
   751  	resp := &graphql.Response{Data: &data}
   752  
   753  	err = client.MakeRequest(
   754  		nil,
   755  		req,
   756  		resp,
   757  	)
   758  
   759  	return &data, err
   760  }
   761