github.com/codykaup/genqlient@v0.6.2/generate/testdata/snapshots/TestGenerate-InterfaceNoFragments.graphql-InterfaceNoFragments.graphql.go (about)

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