Add support for interfaces, part 4: getter methods (#57)
## Summary:
Right now, if you make a query like `{ myInterface { field } }`, you
have to type-switch on all the possible implementations of `myInterface`
to get at `field`. Now, we generate getter-methods (e.g. `GetField`),
to make that access easier. Of course this only applies to shared
fields (which for now are the only ones, but once we support fragments
will no longer be).
This also includes a small change to the way we generate type-names for
interfaces: we no longer include the name of the concrete type in the
interface we propagate forward, so we generate
`MyInterfaceMyFieldMyType`, not `MyInterfaceMyImplMyFieldMyType`, in the
case where you have an interface `MyInterface` implemented by `MyImpl`
(and maybe other types) with field `myField: MyType`. This is necessary
so the getter method returns a well-defined type, and also probably
convenient for calling code. It will have to get a little bit more
complicated once we support fragments, where you could have two
implementing types with identically-named fields of different types, but
I think it'll be easiest to figure out how to deal with that when
implementing fragments.
While I was in the area, I added to the interface doc-comment a list of
the implementations. (In GraphQL, we're guaranteed to know them all
assuming our schema is up to date.)
Issue: https://github.com/Khan/genqlient/issues/8
## Test plan:
make check
Author: benjaminjkraft
Reviewers: benjaminjkraft, dnerdy, aberkan, MiguelCastillo
Required Reviewers:
Approved by: dnerdy
Checks: ✅ Test (1.17), ✅ Test (1.16), ✅ Test (1.15), ✅ Test (1.14), ✅ Test (1.13), ✅ Lint, ✅ Test (1.17), ✅ Test (1.16), ✅ Test (1.15), ✅ Test (1.14), ✅ Test (1.13), ✅ Lint
Pull request URL: https://github.com/Khan/genqlient/pull/57
This commit is contained in:
Vendored
+90
-2
@@ -65,21 +65,65 @@ type InterfaceListFieldRootTopicChildrenArticle struct {
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
// InterfaceListFieldRootTopicChildrenContent includes the requested fields of the GraphQL type Content.
|
||||
// InterfaceListFieldRootTopicChildrenContent includes the requested fields of the GraphQL interface Content.
|
||||
//
|
||||
// InterfaceListFieldRootTopicChildrenContent is implemented by the following types:
|
||||
// InterfaceListFieldRootTopicChildrenArticle
|
||||
// InterfaceListFieldRootTopicChildrenVideo
|
||||
// InterfaceListFieldRootTopicChildrenTopic
|
||||
//
|
||||
// The GraphQL type's documentation follows.
|
||||
//
|
||||
// Content is implemented by various types like Article, Video, and Topic.
|
||||
type InterfaceListFieldRootTopicChildrenContent interface {
|
||||
implementsGraphQLInterfaceInterfaceListFieldRootTopicChildrenContent()
|
||||
// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
|
||||
GetTypename() string
|
||||
// GetId returns the interface-field "id" from its implementation.
|
||||
// The GraphQL interface field's documentation follows.
|
||||
//
|
||||
// ID is the identifier of the content.
|
||||
GetId() testutil.ID
|
||||
// GetName returns the interface-field "name" from its implementation.
|
||||
GetName() string
|
||||
}
|
||||
|
||||
func (v *InterfaceListFieldRootTopicChildrenArticle) implementsGraphQLInterfaceInterfaceListFieldRootTopicChildrenContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceListFieldRootTopicChildrenContent.
|
||||
func (v *InterfaceListFieldRootTopicChildrenArticle) GetTypename() string { return v.Typename }
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceListFieldRootTopicChildrenContent.
|
||||
func (v *InterfaceListFieldRootTopicChildrenArticle) GetId() testutil.ID { return v.Id }
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceListFieldRootTopicChildrenContent.
|
||||
func (v *InterfaceListFieldRootTopicChildrenArticle) GetName() string { return v.Name }
|
||||
|
||||
func (v *InterfaceListFieldRootTopicChildrenVideo) implementsGraphQLInterfaceInterfaceListFieldRootTopicChildrenContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceListFieldRootTopicChildrenContent.
|
||||
func (v *InterfaceListFieldRootTopicChildrenVideo) GetTypename() string { return v.Typename }
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceListFieldRootTopicChildrenContent.
|
||||
func (v *InterfaceListFieldRootTopicChildrenVideo) GetId() testutil.ID { return v.Id }
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceListFieldRootTopicChildrenContent.
|
||||
func (v *InterfaceListFieldRootTopicChildrenVideo) GetName() string { return v.Name }
|
||||
|
||||
func (v *InterfaceListFieldRootTopicChildrenTopic) implementsGraphQLInterfaceInterfaceListFieldRootTopicChildrenContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceListFieldRootTopicChildrenContent.
|
||||
func (v *InterfaceListFieldRootTopicChildrenTopic) GetTypename() string { return v.Typename }
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceListFieldRootTopicChildrenContent.
|
||||
func (v *InterfaceListFieldRootTopicChildrenTopic) GetId() testutil.ID { return v.Id }
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceListFieldRootTopicChildrenContent.
|
||||
func (v *InterfaceListFieldRootTopicChildrenTopic) GetName() string { return v.Name }
|
||||
|
||||
func __unmarshalInterfaceListFieldRootTopicChildrenContent(v *InterfaceListFieldRootTopicChildrenContent, m json.RawMessage) error {
|
||||
if string(m) == "null" {
|
||||
return nil
|
||||
@@ -174,21 +218,65 @@ type InterfaceListFieldWithPointerTopicChildrenArticle struct {
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
// InterfaceListFieldWithPointerTopicChildrenContent includes the requested fields of the GraphQL type Content.
|
||||
// InterfaceListFieldWithPointerTopicChildrenContent includes the requested fields of the GraphQL interface Content.
|
||||
//
|
||||
// InterfaceListFieldWithPointerTopicChildrenContent is implemented by the following types:
|
||||
// InterfaceListFieldWithPointerTopicChildrenArticle
|
||||
// InterfaceListFieldWithPointerTopicChildrenVideo
|
||||
// InterfaceListFieldWithPointerTopicChildrenTopic
|
||||
//
|
||||
// The GraphQL type's documentation follows.
|
||||
//
|
||||
// Content is implemented by various types like Article, Video, and Topic.
|
||||
type InterfaceListFieldWithPointerTopicChildrenContent interface {
|
||||
implementsGraphQLInterfaceInterfaceListFieldWithPointerTopicChildrenContent()
|
||||
// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
|
||||
GetTypename() string
|
||||
// GetId returns the interface-field "id" from its implementation.
|
||||
// The GraphQL interface field's documentation follows.
|
||||
//
|
||||
// ID is the identifier of the content.
|
||||
GetId() testutil.ID
|
||||
// GetName returns the interface-field "name" from its implementation.
|
||||
GetName() string
|
||||
}
|
||||
|
||||
func (v *InterfaceListFieldWithPointerTopicChildrenArticle) implementsGraphQLInterfaceInterfaceListFieldWithPointerTopicChildrenContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceListFieldWithPointerTopicChildrenContent.
|
||||
func (v *InterfaceListFieldWithPointerTopicChildrenArticle) GetTypename() string { return v.Typename }
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceListFieldWithPointerTopicChildrenContent.
|
||||
func (v *InterfaceListFieldWithPointerTopicChildrenArticle) GetId() testutil.ID { return v.Id }
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceListFieldWithPointerTopicChildrenContent.
|
||||
func (v *InterfaceListFieldWithPointerTopicChildrenArticle) GetName() string { return v.Name }
|
||||
|
||||
func (v *InterfaceListFieldWithPointerTopicChildrenVideo) implementsGraphQLInterfaceInterfaceListFieldWithPointerTopicChildrenContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceListFieldWithPointerTopicChildrenContent.
|
||||
func (v *InterfaceListFieldWithPointerTopicChildrenVideo) GetTypename() string { return v.Typename }
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceListFieldWithPointerTopicChildrenContent.
|
||||
func (v *InterfaceListFieldWithPointerTopicChildrenVideo) GetId() testutil.ID { return v.Id }
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceListFieldWithPointerTopicChildrenContent.
|
||||
func (v *InterfaceListFieldWithPointerTopicChildrenVideo) GetName() string { return v.Name }
|
||||
|
||||
func (v *InterfaceListFieldWithPointerTopicChildrenTopic) implementsGraphQLInterfaceInterfaceListFieldWithPointerTopicChildrenContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceListFieldWithPointerTopicChildrenContent.
|
||||
func (v *InterfaceListFieldWithPointerTopicChildrenTopic) GetTypename() string { return v.Typename }
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceListFieldWithPointerTopicChildrenContent.
|
||||
func (v *InterfaceListFieldWithPointerTopicChildrenTopic) GetId() testutil.ID { return v.Id }
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceListFieldWithPointerTopicChildrenContent.
|
||||
func (v *InterfaceListFieldWithPointerTopicChildrenTopic) GetName() string { return v.Name }
|
||||
|
||||
func __unmarshalInterfaceListFieldWithPointerTopicChildrenContent(v *InterfaceListFieldWithPointerTopicChildrenContent, m json.RawMessage) error {
|
||||
if string(m) == "null" {
|
||||
return nil
|
||||
|
||||
+108
-2
@@ -10,21 +10,83 @@ import (
|
||||
"github.com/Khan/genqlient/internal/testutil"
|
||||
)
|
||||
|
||||
// InterfaceListOfListOfListsFieldListOfListsOfListsOfContent includes the requested fields of the GraphQL type Content.
|
||||
// InterfaceListOfListOfListsFieldListOfListsOfListsOfContent includes the requested fields of the GraphQL interface Content.
|
||||
//
|
||||
// InterfaceListOfListOfListsFieldListOfListsOfListsOfContent is implemented by the following types:
|
||||
// InterfaceListOfListOfListsFieldListOfListsOfListsOfContentArticle
|
||||
// InterfaceListOfListOfListsFieldListOfListsOfListsOfContentVideo
|
||||
// InterfaceListOfListOfListsFieldListOfListsOfListsOfContentTopic
|
||||
//
|
||||
// The GraphQL type's documentation follows.
|
||||
//
|
||||
// Content is implemented by various types like Article, Video, and Topic.
|
||||
type InterfaceListOfListOfListsFieldListOfListsOfListsOfContent interface {
|
||||
implementsGraphQLInterfaceInterfaceListOfListOfListsFieldListOfListsOfListsOfContent()
|
||||
// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
|
||||
GetTypename() string
|
||||
// GetId returns the interface-field "id" from its implementation.
|
||||
// The GraphQL interface field's documentation follows.
|
||||
//
|
||||
// ID is the identifier of the content.
|
||||
GetId() testutil.ID
|
||||
// GetName returns the interface-field "name" from its implementation.
|
||||
GetName() string
|
||||
}
|
||||
|
||||
func (v *InterfaceListOfListOfListsFieldListOfListsOfListsOfContentArticle) implementsGraphQLInterfaceInterfaceListOfListOfListsFieldListOfListsOfListsOfContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceListOfListOfListsFieldListOfListsOfListsOfContent.
|
||||
func (v *InterfaceListOfListOfListsFieldListOfListsOfListsOfContentArticle) GetTypename() string {
|
||||
return v.Typename
|
||||
}
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceListOfListOfListsFieldListOfListsOfListsOfContent.
|
||||
func (v *InterfaceListOfListOfListsFieldListOfListsOfListsOfContentArticle) GetId() testutil.ID {
|
||||
return v.Id
|
||||
}
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceListOfListOfListsFieldListOfListsOfListsOfContent.
|
||||
func (v *InterfaceListOfListOfListsFieldListOfListsOfListsOfContentArticle) GetName() string {
|
||||
return v.Name
|
||||
}
|
||||
|
||||
func (v *InterfaceListOfListOfListsFieldListOfListsOfListsOfContentVideo) implementsGraphQLInterfaceInterfaceListOfListOfListsFieldListOfListsOfListsOfContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceListOfListOfListsFieldListOfListsOfListsOfContent.
|
||||
func (v *InterfaceListOfListOfListsFieldListOfListsOfListsOfContentVideo) GetTypename() string {
|
||||
return v.Typename
|
||||
}
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceListOfListOfListsFieldListOfListsOfListsOfContent.
|
||||
func (v *InterfaceListOfListOfListsFieldListOfListsOfListsOfContentVideo) GetId() testutil.ID {
|
||||
return v.Id
|
||||
}
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceListOfListOfListsFieldListOfListsOfListsOfContent.
|
||||
func (v *InterfaceListOfListOfListsFieldListOfListsOfListsOfContentVideo) GetName() string {
|
||||
return v.Name
|
||||
}
|
||||
|
||||
func (v *InterfaceListOfListOfListsFieldListOfListsOfListsOfContentTopic) implementsGraphQLInterfaceInterfaceListOfListOfListsFieldListOfListsOfListsOfContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceListOfListOfListsFieldListOfListsOfListsOfContent.
|
||||
func (v *InterfaceListOfListOfListsFieldListOfListsOfListsOfContentTopic) GetTypename() string {
|
||||
return v.Typename
|
||||
}
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceListOfListOfListsFieldListOfListsOfListsOfContent.
|
||||
func (v *InterfaceListOfListOfListsFieldListOfListsOfListsOfContentTopic) GetId() testutil.ID {
|
||||
return v.Id
|
||||
}
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceListOfListOfListsFieldListOfListsOfListsOfContent.
|
||||
func (v *InterfaceListOfListOfListsFieldListOfListsOfListsOfContentTopic) GetName() string {
|
||||
return v.Name
|
||||
}
|
||||
|
||||
func __unmarshalInterfaceListOfListOfListsFieldListOfListsOfListsOfContent(v *InterfaceListOfListOfListsFieldListOfListsOfListsOfContent, m json.RawMessage) error {
|
||||
if string(m) == "null" {
|
||||
return nil
|
||||
@@ -166,21 +228,65 @@ type InterfaceListOfListOfListsFieldWithPointerArticle struct {
|
||||
Name *string `json:"name"`
|
||||
}
|
||||
|
||||
// InterfaceListOfListOfListsFieldWithPointerContent includes the requested fields of the GraphQL type Content.
|
||||
// InterfaceListOfListOfListsFieldWithPointerContent includes the requested fields of the GraphQL interface Content.
|
||||
//
|
||||
// InterfaceListOfListOfListsFieldWithPointerContent is implemented by the following types:
|
||||
// InterfaceListOfListOfListsFieldWithPointerArticle
|
||||
// InterfaceListOfListOfListsFieldWithPointerVideo
|
||||
// InterfaceListOfListOfListsFieldWithPointerTopic
|
||||
//
|
||||
// The GraphQL type's documentation follows.
|
||||
//
|
||||
// Content is implemented by various types like Article, Video, and Topic.
|
||||
type InterfaceListOfListOfListsFieldWithPointerContent interface {
|
||||
implementsGraphQLInterfaceInterfaceListOfListOfListsFieldWithPointerContent()
|
||||
// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
|
||||
GetTypename() string
|
||||
// GetId returns the interface-field "id" from its implementation.
|
||||
// The GraphQL interface field's documentation follows.
|
||||
//
|
||||
// ID is the identifier of the content.
|
||||
GetId() *testutil.ID
|
||||
// GetName returns the interface-field "name" from its implementation.
|
||||
GetName() *string
|
||||
}
|
||||
|
||||
func (v *InterfaceListOfListOfListsFieldWithPointerArticle) implementsGraphQLInterfaceInterfaceListOfListOfListsFieldWithPointerContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceListOfListOfListsFieldWithPointerContent.
|
||||
func (v *InterfaceListOfListOfListsFieldWithPointerArticle) GetTypename() string { return v.Typename }
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceListOfListOfListsFieldWithPointerContent.
|
||||
func (v *InterfaceListOfListOfListsFieldWithPointerArticle) GetId() *testutil.ID { return v.Id }
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceListOfListOfListsFieldWithPointerContent.
|
||||
func (v *InterfaceListOfListOfListsFieldWithPointerArticle) GetName() *string { return v.Name }
|
||||
|
||||
func (v *InterfaceListOfListOfListsFieldWithPointerVideo) implementsGraphQLInterfaceInterfaceListOfListOfListsFieldWithPointerContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceListOfListOfListsFieldWithPointerContent.
|
||||
func (v *InterfaceListOfListOfListsFieldWithPointerVideo) GetTypename() string { return v.Typename }
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceListOfListOfListsFieldWithPointerContent.
|
||||
func (v *InterfaceListOfListOfListsFieldWithPointerVideo) GetId() *testutil.ID { return v.Id }
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceListOfListOfListsFieldWithPointerContent.
|
||||
func (v *InterfaceListOfListOfListsFieldWithPointerVideo) GetName() *string { return v.Name }
|
||||
|
||||
func (v *InterfaceListOfListOfListsFieldWithPointerTopic) implementsGraphQLInterfaceInterfaceListOfListOfListsFieldWithPointerContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceListOfListOfListsFieldWithPointerContent.
|
||||
func (v *InterfaceListOfListOfListsFieldWithPointerTopic) GetTypename() string { return v.Typename }
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceListOfListOfListsFieldWithPointerContent.
|
||||
func (v *InterfaceListOfListOfListsFieldWithPointerTopic) GetId() *testutil.ID { return v.Id }
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceListOfListOfListsFieldWithPointerContent.
|
||||
func (v *InterfaceListOfListOfListsFieldWithPointerTopic) GetName() *string { return v.Name }
|
||||
|
||||
func __unmarshalInterfaceListOfListOfListsFieldWithPointerContent(v *InterfaceListOfListOfListsFieldWithPointerContent, m json.RawMessage) error {
|
||||
if string(m) == "null" {
|
||||
return nil
|
||||
|
||||
Vendored
+132
-251
@@ -59,130 +59,75 @@ func (v *InterfaceNestingRootTopic) UnmarshalJSON(b []byte) error {
|
||||
type InterfaceNestingRootTopicChildrenArticle struct {
|
||||
Typename string `json:"__typename"`
|
||||
// ID is the identifier of the content.
|
||||
Id testutil.ID `json:"id"`
|
||||
Parent InterfaceNestingRootTopicChildrenArticleParentTopic `json:"parent"`
|
||||
Id testutil.ID `json:"id"`
|
||||
Parent InterfaceNestingRootTopicChildrenParentTopic `json:"parent"`
|
||||
}
|
||||
|
||||
// InterfaceNestingRootTopicChildrenArticleParentTopic includes the requested fields of the GraphQL type Topic.
|
||||
type InterfaceNestingRootTopicChildrenArticleParentTopic struct {
|
||||
// ID is documented in the Content interface.
|
||||
Id testutil.ID `json:"id"`
|
||||
Children []InterfaceNestingRootTopicChildrenArticleParentTopicChildrenContent `json:"-"`
|
||||
}
|
||||
|
||||
func (v *InterfaceNestingRootTopicChildrenArticleParentTopic) UnmarshalJSON(b []byte) error {
|
||||
|
||||
type InterfaceNestingRootTopicChildrenArticleParentTopicWrapper InterfaceNestingRootTopicChildrenArticleParentTopic
|
||||
|
||||
var firstPass struct {
|
||||
*InterfaceNestingRootTopicChildrenArticleParentTopicWrapper
|
||||
Children []json.RawMessage `json:"children"`
|
||||
}
|
||||
firstPass.InterfaceNestingRootTopicChildrenArticleParentTopicWrapper = (*InterfaceNestingRootTopicChildrenArticleParentTopicWrapper)(v)
|
||||
|
||||
err := json.Unmarshal(b, &firstPass)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
{
|
||||
target := &v.Children
|
||||
raw := firstPass.Children
|
||||
*target = make(
|
||||
[]InterfaceNestingRootTopicChildrenArticleParentTopicChildrenContent,
|
||||
len(raw))
|
||||
for i, raw := range raw {
|
||||
target := &(*target)[i]
|
||||
err = __unmarshalInterfaceNestingRootTopicChildrenArticleParentTopicChildrenContent(
|
||||
target, raw)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// InterfaceNestingRootTopicChildrenArticleParentTopicChildrenArticle includes the requested fields of the GraphQL type Article.
|
||||
type InterfaceNestingRootTopicChildrenArticleParentTopicChildrenArticle struct {
|
||||
Typename string `json:"__typename"`
|
||||
// ID is the identifier of the content.
|
||||
Id testutil.ID `json:"id"`
|
||||
}
|
||||
|
||||
// InterfaceNestingRootTopicChildrenArticleParentTopicChildrenContent includes the requested fields of the GraphQL type Content.
|
||||
// The GraphQL type's documentation follows.
|
||||
// InterfaceNestingRootTopicChildrenContent includes the requested fields of the GraphQL interface Content.
|
||||
//
|
||||
// InterfaceNestingRootTopicChildrenContent is implemented by the following types:
|
||||
// InterfaceNestingRootTopicChildrenArticle
|
||||
// InterfaceNestingRootTopicChildrenVideo
|
||||
// InterfaceNestingRootTopicChildrenTopic
|
||||
//
|
||||
// Content is implemented by various types like Article, Video, and Topic.
|
||||
type InterfaceNestingRootTopicChildrenArticleParentTopicChildrenContent interface {
|
||||
implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenArticleParentTopicChildrenContent()
|
||||
}
|
||||
|
||||
func (v *InterfaceNestingRootTopicChildrenArticleParentTopicChildrenArticle) implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenArticleParentTopicChildrenContent() {
|
||||
}
|
||||
func (v *InterfaceNestingRootTopicChildrenArticleParentTopicChildrenVideo) implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenArticleParentTopicChildrenContent() {
|
||||
}
|
||||
func (v *InterfaceNestingRootTopicChildrenArticleParentTopicChildrenTopic) implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenArticleParentTopicChildrenContent() {
|
||||
}
|
||||
|
||||
func __unmarshalInterfaceNestingRootTopicChildrenArticleParentTopicChildrenContent(v *InterfaceNestingRootTopicChildrenArticleParentTopicChildrenContent, m json.RawMessage) error {
|
||||
if string(m) == "null" {
|
||||
return nil
|
||||
}
|
||||
|
||||
var tn struct {
|
||||
TypeName string `json:"__typename"`
|
||||
}
|
||||
err := json.Unmarshal(m, &tn)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
switch tn.TypeName {
|
||||
case "Article":
|
||||
*v = new(InterfaceNestingRootTopicChildrenArticleParentTopicChildrenArticle)
|
||||
return json.Unmarshal(m, *v)
|
||||
case "Video":
|
||||
*v = new(InterfaceNestingRootTopicChildrenArticleParentTopicChildrenVideo)
|
||||
return json.Unmarshal(m, *v)
|
||||
case "Topic":
|
||||
*v = new(InterfaceNestingRootTopicChildrenArticleParentTopicChildrenTopic)
|
||||
return json.Unmarshal(m, *v)
|
||||
default:
|
||||
return fmt.Errorf(
|
||||
`Unexpected concrete type for InterfaceNestingRootTopicChildrenArticleParentTopicChildrenContent: "%v"`, tn.TypeName)
|
||||
}
|
||||
}
|
||||
|
||||
// InterfaceNestingRootTopicChildrenArticleParentTopicChildrenTopic includes the requested fields of the GraphQL type Topic.
|
||||
type InterfaceNestingRootTopicChildrenArticleParentTopicChildrenTopic struct {
|
||||
Typename string `json:"__typename"`
|
||||
// ID is the identifier of the content.
|
||||
Id testutil.ID `json:"id"`
|
||||
}
|
||||
|
||||
// InterfaceNestingRootTopicChildrenArticleParentTopicChildrenVideo includes the requested fields of the GraphQL type Video.
|
||||
type InterfaceNestingRootTopicChildrenArticleParentTopicChildrenVideo struct {
|
||||
Typename string `json:"__typename"`
|
||||
// ID is the identifier of the content.
|
||||
Id testutil.ID `json:"id"`
|
||||
}
|
||||
|
||||
// InterfaceNestingRootTopicChildrenContent includes the requested fields of the GraphQL type Content.
|
||||
// The GraphQL type's documentation follows.
|
||||
//
|
||||
// Content is implemented by various types like Article, Video, and Topic.
|
||||
type InterfaceNestingRootTopicChildrenContent interface {
|
||||
implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenContent()
|
||||
// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
|
||||
GetTypename() string
|
||||
// GetId returns the interface-field "id" from its implementation.
|
||||
// The GraphQL interface field's documentation follows.
|
||||
//
|
||||
// ID is the identifier of the content.
|
||||
GetId() testutil.ID
|
||||
// GetParent returns the interface-field "parent" from its implementation.
|
||||
GetParent() InterfaceNestingRootTopicChildrenParentTopic
|
||||
}
|
||||
|
||||
func (v *InterfaceNestingRootTopicChildrenArticle) implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceNestingRootTopicChildrenContent.
|
||||
func (v *InterfaceNestingRootTopicChildrenArticle) GetTypename() string { return v.Typename }
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceNestingRootTopicChildrenContent.
|
||||
func (v *InterfaceNestingRootTopicChildrenArticle) GetId() testutil.ID { return v.Id }
|
||||
|
||||
// GetParent is a part of, and documented with, the interface InterfaceNestingRootTopicChildrenContent.
|
||||
func (v *InterfaceNestingRootTopicChildrenArticle) GetParent() InterfaceNestingRootTopicChildrenParentTopic {
|
||||
return v.Parent
|
||||
}
|
||||
|
||||
func (v *InterfaceNestingRootTopicChildrenVideo) implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceNestingRootTopicChildrenContent.
|
||||
func (v *InterfaceNestingRootTopicChildrenVideo) GetTypename() string { return v.Typename }
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceNestingRootTopicChildrenContent.
|
||||
func (v *InterfaceNestingRootTopicChildrenVideo) GetId() testutil.ID { return v.Id }
|
||||
|
||||
// GetParent is a part of, and documented with, the interface InterfaceNestingRootTopicChildrenContent.
|
||||
func (v *InterfaceNestingRootTopicChildrenVideo) GetParent() InterfaceNestingRootTopicChildrenParentTopic {
|
||||
return v.Parent
|
||||
}
|
||||
|
||||
func (v *InterfaceNestingRootTopicChildrenTopic) implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceNestingRootTopicChildrenContent.
|
||||
func (v *InterfaceNestingRootTopicChildrenTopic) GetTypename() string { return v.Typename }
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceNestingRootTopicChildrenContent.
|
||||
func (v *InterfaceNestingRootTopicChildrenTopic) GetId() testutil.ID { return v.Id }
|
||||
|
||||
// GetParent is a part of, and documented with, the interface InterfaceNestingRootTopicChildrenContent.
|
||||
func (v *InterfaceNestingRootTopicChildrenTopic) GetParent() InterfaceNestingRootTopicChildrenParentTopic {
|
||||
return v.Parent
|
||||
}
|
||||
|
||||
func __unmarshalInterfaceNestingRootTopicChildrenContent(v *InterfaceNestingRootTopicChildrenContent, m json.RawMessage) error {
|
||||
if string(m) == "null" {
|
||||
return nil
|
||||
@@ -212,30 +157,22 @@ func __unmarshalInterfaceNestingRootTopicChildrenContent(v *InterfaceNestingRoot
|
||||
}
|
||||
}
|
||||
|
||||
// InterfaceNestingRootTopicChildrenTopic includes the requested fields of the GraphQL type Topic.
|
||||
type InterfaceNestingRootTopicChildrenTopic struct {
|
||||
Typename string `json:"__typename"`
|
||||
// ID is the identifier of the content.
|
||||
Id testutil.ID `json:"id"`
|
||||
Parent InterfaceNestingRootTopicChildrenTopicParentTopic `json:"parent"`
|
||||
}
|
||||
|
||||
// InterfaceNestingRootTopicChildrenTopicParentTopic includes the requested fields of the GraphQL type Topic.
|
||||
type InterfaceNestingRootTopicChildrenTopicParentTopic struct {
|
||||
// InterfaceNestingRootTopicChildrenParentTopic includes the requested fields of the GraphQL type Topic.
|
||||
type InterfaceNestingRootTopicChildrenParentTopic struct {
|
||||
// ID is documented in the Content interface.
|
||||
Id testutil.ID `json:"id"`
|
||||
Children []InterfaceNestingRootTopicChildrenTopicParentTopicChildrenContent `json:"-"`
|
||||
Id testutil.ID `json:"id"`
|
||||
Children []InterfaceNestingRootTopicChildrenParentTopicChildrenContent `json:"-"`
|
||||
}
|
||||
|
||||
func (v *InterfaceNestingRootTopicChildrenTopicParentTopic) UnmarshalJSON(b []byte) error {
|
||||
func (v *InterfaceNestingRootTopicChildrenParentTopic) UnmarshalJSON(b []byte) error {
|
||||
|
||||
type InterfaceNestingRootTopicChildrenTopicParentTopicWrapper InterfaceNestingRootTopicChildrenTopicParentTopic
|
||||
type InterfaceNestingRootTopicChildrenParentTopicWrapper InterfaceNestingRootTopicChildrenParentTopic
|
||||
|
||||
var firstPass struct {
|
||||
*InterfaceNestingRootTopicChildrenTopicParentTopicWrapper
|
||||
*InterfaceNestingRootTopicChildrenParentTopicWrapper
|
||||
Children []json.RawMessage `json:"children"`
|
||||
}
|
||||
firstPass.InterfaceNestingRootTopicChildrenTopicParentTopicWrapper = (*InterfaceNestingRootTopicChildrenTopicParentTopicWrapper)(v)
|
||||
firstPass.InterfaceNestingRootTopicChildrenParentTopicWrapper = (*InterfaceNestingRootTopicChildrenParentTopicWrapper)(v)
|
||||
|
||||
err := json.Unmarshal(b, &firstPass)
|
||||
if err != nil {
|
||||
@@ -246,11 +183,11 @@ func (v *InterfaceNestingRootTopicChildrenTopicParentTopic) UnmarshalJSON(b []by
|
||||
target := &v.Children
|
||||
raw := firstPass.Children
|
||||
*target = make(
|
||||
[]InterfaceNestingRootTopicChildrenTopicParentTopicChildrenContent,
|
||||
[]InterfaceNestingRootTopicChildrenParentTopicChildrenContent,
|
||||
len(raw))
|
||||
for i, raw := range raw {
|
||||
target := &(*target)[i]
|
||||
err = __unmarshalInterfaceNestingRootTopicChildrenTopicParentTopicChildrenContent(
|
||||
err = __unmarshalInterfaceNestingRootTopicChildrenParentTopicChildrenContent(
|
||||
target, raw)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -260,29 +197,70 @@ func (v *InterfaceNestingRootTopicChildrenTopicParentTopic) UnmarshalJSON(b []by
|
||||
return nil
|
||||
}
|
||||
|
||||
// InterfaceNestingRootTopicChildrenTopicParentTopicChildrenArticle includes the requested fields of the GraphQL type Article.
|
||||
type InterfaceNestingRootTopicChildrenTopicParentTopicChildrenArticle struct {
|
||||
// InterfaceNestingRootTopicChildrenParentTopicChildrenArticle includes the requested fields of the GraphQL type Article.
|
||||
type InterfaceNestingRootTopicChildrenParentTopicChildrenArticle struct {
|
||||
Typename string `json:"__typename"`
|
||||
// ID is the identifier of the content.
|
||||
Id testutil.ID `json:"id"`
|
||||
}
|
||||
|
||||
// InterfaceNestingRootTopicChildrenTopicParentTopicChildrenContent includes the requested fields of the GraphQL type Content.
|
||||
// InterfaceNestingRootTopicChildrenParentTopicChildrenContent includes the requested fields of the GraphQL interface Content.
|
||||
//
|
||||
// InterfaceNestingRootTopicChildrenParentTopicChildrenContent is implemented by the following types:
|
||||
// InterfaceNestingRootTopicChildrenParentTopicChildrenArticle
|
||||
// InterfaceNestingRootTopicChildrenParentTopicChildrenVideo
|
||||
// InterfaceNestingRootTopicChildrenParentTopicChildrenTopic
|
||||
//
|
||||
// The GraphQL type's documentation follows.
|
||||
//
|
||||
// Content is implemented by various types like Article, Video, and Topic.
|
||||
type InterfaceNestingRootTopicChildrenTopicParentTopicChildrenContent interface {
|
||||
implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenTopicParentTopicChildrenContent()
|
||||
type InterfaceNestingRootTopicChildrenParentTopicChildrenContent interface {
|
||||
implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenParentTopicChildrenContent()
|
||||
// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
|
||||
GetTypename() string
|
||||
// GetId returns the interface-field "id" from its implementation.
|
||||
// The GraphQL interface field's documentation follows.
|
||||
//
|
||||
// ID is the identifier of the content.
|
||||
GetId() testutil.ID
|
||||
}
|
||||
|
||||
func (v *InterfaceNestingRootTopicChildrenTopicParentTopicChildrenArticle) implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenTopicParentTopicChildrenContent() {
|
||||
}
|
||||
func (v *InterfaceNestingRootTopicChildrenTopicParentTopicChildrenVideo) implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenTopicParentTopicChildrenContent() {
|
||||
}
|
||||
func (v *InterfaceNestingRootTopicChildrenTopicParentTopicChildrenTopic) implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenTopicParentTopicChildrenContent() {
|
||||
func (v *InterfaceNestingRootTopicChildrenParentTopicChildrenArticle) implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenParentTopicChildrenContent() {
|
||||
}
|
||||
|
||||
func __unmarshalInterfaceNestingRootTopicChildrenTopicParentTopicChildrenContent(v *InterfaceNestingRootTopicChildrenTopicParentTopicChildrenContent, m json.RawMessage) error {
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceNestingRootTopicChildrenParentTopicChildrenContent.
|
||||
func (v *InterfaceNestingRootTopicChildrenParentTopicChildrenArticle) GetTypename() string {
|
||||
return v.Typename
|
||||
}
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceNestingRootTopicChildrenParentTopicChildrenContent.
|
||||
func (v *InterfaceNestingRootTopicChildrenParentTopicChildrenArticle) GetId() testutil.ID {
|
||||
return v.Id
|
||||
}
|
||||
|
||||
func (v *InterfaceNestingRootTopicChildrenParentTopicChildrenVideo) implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenParentTopicChildrenContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceNestingRootTopicChildrenParentTopicChildrenContent.
|
||||
func (v *InterfaceNestingRootTopicChildrenParentTopicChildrenVideo) GetTypename() string {
|
||||
return v.Typename
|
||||
}
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceNestingRootTopicChildrenParentTopicChildrenContent.
|
||||
func (v *InterfaceNestingRootTopicChildrenParentTopicChildrenVideo) GetId() testutil.ID { return v.Id }
|
||||
|
||||
func (v *InterfaceNestingRootTopicChildrenParentTopicChildrenTopic) implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenParentTopicChildrenContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceNestingRootTopicChildrenParentTopicChildrenContent.
|
||||
func (v *InterfaceNestingRootTopicChildrenParentTopicChildrenTopic) GetTypename() string {
|
||||
return v.Typename
|
||||
}
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceNestingRootTopicChildrenParentTopicChildrenContent.
|
||||
func (v *InterfaceNestingRootTopicChildrenParentTopicChildrenTopic) GetId() testutil.ID { return v.Id }
|
||||
|
||||
func __unmarshalInterfaceNestingRootTopicChildrenParentTopicChildrenContent(v *InterfaceNestingRootTopicChildrenParentTopicChildrenContent, m json.RawMessage) error {
|
||||
if string(m) == "null" {
|
||||
return nil
|
||||
}
|
||||
@@ -297,145 +275,48 @@ func __unmarshalInterfaceNestingRootTopicChildrenTopicParentTopicChildrenContent
|
||||
|
||||
switch tn.TypeName {
|
||||
case "Article":
|
||||
*v = new(InterfaceNestingRootTopicChildrenTopicParentTopicChildrenArticle)
|
||||
*v = new(InterfaceNestingRootTopicChildrenParentTopicChildrenArticle)
|
||||
return json.Unmarshal(m, *v)
|
||||
case "Video":
|
||||
*v = new(InterfaceNestingRootTopicChildrenTopicParentTopicChildrenVideo)
|
||||
*v = new(InterfaceNestingRootTopicChildrenParentTopicChildrenVideo)
|
||||
return json.Unmarshal(m, *v)
|
||||
case "Topic":
|
||||
*v = new(InterfaceNestingRootTopicChildrenTopicParentTopicChildrenTopic)
|
||||
*v = new(InterfaceNestingRootTopicChildrenParentTopicChildrenTopic)
|
||||
return json.Unmarshal(m, *v)
|
||||
default:
|
||||
return fmt.Errorf(
|
||||
`Unexpected concrete type for InterfaceNestingRootTopicChildrenTopicParentTopicChildrenContent: "%v"`, tn.TypeName)
|
||||
`Unexpected concrete type for InterfaceNestingRootTopicChildrenParentTopicChildrenContent: "%v"`, tn.TypeName)
|
||||
}
|
||||
}
|
||||
|
||||
// InterfaceNestingRootTopicChildrenTopicParentTopicChildrenTopic includes the requested fields of the GraphQL type Topic.
|
||||
type InterfaceNestingRootTopicChildrenTopicParentTopicChildrenTopic struct {
|
||||
// InterfaceNestingRootTopicChildrenParentTopicChildrenTopic includes the requested fields of the GraphQL type Topic.
|
||||
type InterfaceNestingRootTopicChildrenParentTopicChildrenTopic struct {
|
||||
Typename string `json:"__typename"`
|
||||
// ID is the identifier of the content.
|
||||
Id testutil.ID `json:"id"`
|
||||
}
|
||||
|
||||
// InterfaceNestingRootTopicChildrenTopicParentTopicChildrenVideo includes the requested fields of the GraphQL type Video.
|
||||
type InterfaceNestingRootTopicChildrenTopicParentTopicChildrenVideo struct {
|
||||
// InterfaceNestingRootTopicChildrenParentTopicChildrenVideo includes the requested fields of the GraphQL type Video.
|
||||
type InterfaceNestingRootTopicChildrenParentTopicChildrenVideo struct {
|
||||
Typename string `json:"__typename"`
|
||||
// ID is the identifier of the content.
|
||||
Id testutil.ID `json:"id"`
|
||||
}
|
||||
|
||||
// InterfaceNestingRootTopicChildrenTopic includes the requested fields of the GraphQL type Topic.
|
||||
type InterfaceNestingRootTopicChildrenTopic struct {
|
||||
Typename string `json:"__typename"`
|
||||
// ID is the identifier of the content.
|
||||
Id testutil.ID `json:"id"`
|
||||
Parent InterfaceNestingRootTopicChildrenParentTopic `json:"parent"`
|
||||
}
|
||||
|
||||
// InterfaceNestingRootTopicChildrenVideo includes the requested fields of the GraphQL type Video.
|
||||
type InterfaceNestingRootTopicChildrenVideo struct {
|
||||
Typename string `json:"__typename"`
|
||||
// ID is the identifier of the content.
|
||||
Id testutil.ID `json:"id"`
|
||||
Parent InterfaceNestingRootTopicChildrenVideoParentTopic `json:"parent"`
|
||||
}
|
||||
|
||||
// InterfaceNestingRootTopicChildrenVideoParentTopic includes the requested fields of the GraphQL type Topic.
|
||||
type InterfaceNestingRootTopicChildrenVideoParentTopic struct {
|
||||
// ID is documented in the Content interface.
|
||||
Id testutil.ID `json:"id"`
|
||||
Children []InterfaceNestingRootTopicChildrenVideoParentTopicChildrenContent `json:"-"`
|
||||
}
|
||||
|
||||
func (v *InterfaceNestingRootTopicChildrenVideoParentTopic) UnmarshalJSON(b []byte) error {
|
||||
|
||||
type InterfaceNestingRootTopicChildrenVideoParentTopicWrapper InterfaceNestingRootTopicChildrenVideoParentTopic
|
||||
|
||||
var firstPass struct {
|
||||
*InterfaceNestingRootTopicChildrenVideoParentTopicWrapper
|
||||
Children []json.RawMessage `json:"children"`
|
||||
}
|
||||
firstPass.InterfaceNestingRootTopicChildrenVideoParentTopicWrapper = (*InterfaceNestingRootTopicChildrenVideoParentTopicWrapper)(v)
|
||||
|
||||
err := json.Unmarshal(b, &firstPass)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
{
|
||||
target := &v.Children
|
||||
raw := firstPass.Children
|
||||
*target = make(
|
||||
[]InterfaceNestingRootTopicChildrenVideoParentTopicChildrenContent,
|
||||
len(raw))
|
||||
for i, raw := range raw {
|
||||
target := &(*target)[i]
|
||||
err = __unmarshalInterfaceNestingRootTopicChildrenVideoParentTopicChildrenContent(
|
||||
target, raw)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// InterfaceNestingRootTopicChildrenVideoParentTopicChildrenArticle includes the requested fields of the GraphQL type Article.
|
||||
type InterfaceNestingRootTopicChildrenVideoParentTopicChildrenArticle struct {
|
||||
Typename string `json:"__typename"`
|
||||
// ID is the identifier of the content.
|
||||
Id testutil.ID `json:"id"`
|
||||
}
|
||||
|
||||
// InterfaceNestingRootTopicChildrenVideoParentTopicChildrenContent includes the requested fields of the GraphQL type Content.
|
||||
// The GraphQL type's documentation follows.
|
||||
//
|
||||
// Content is implemented by various types like Article, Video, and Topic.
|
||||
type InterfaceNestingRootTopicChildrenVideoParentTopicChildrenContent interface {
|
||||
implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenVideoParentTopicChildrenContent()
|
||||
}
|
||||
|
||||
func (v *InterfaceNestingRootTopicChildrenVideoParentTopicChildrenArticle) implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenVideoParentTopicChildrenContent() {
|
||||
}
|
||||
func (v *InterfaceNestingRootTopicChildrenVideoParentTopicChildrenVideo) implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenVideoParentTopicChildrenContent() {
|
||||
}
|
||||
func (v *InterfaceNestingRootTopicChildrenVideoParentTopicChildrenTopic) implementsGraphQLInterfaceInterfaceNestingRootTopicChildrenVideoParentTopicChildrenContent() {
|
||||
}
|
||||
|
||||
func __unmarshalInterfaceNestingRootTopicChildrenVideoParentTopicChildrenContent(v *InterfaceNestingRootTopicChildrenVideoParentTopicChildrenContent, m json.RawMessage) error {
|
||||
if string(m) == "null" {
|
||||
return nil
|
||||
}
|
||||
|
||||
var tn struct {
|
||||
TypeName string `json:"__typename"`
|
||||
}
|
||||
err := json.Unmarshal(m, &tn)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
switch tn.TypeName {
|
||||
case "Article":
|
||||
*v = new(InterfaceNestingRootTopicChildrenVideoParentTopicChildrenArticle)
|
||||
return json.Unmarshal(m, *v)
|
||||
case "Video":
|
||||
*v = new(InterfaceNestingRootTopicChildrenVideoParentTopicChildrenVideo)
|
||||
return json.Unmarshal(m, *v)
|
||||
case "Topic":
|
||||
*v = new(InterfaceNestingRootTopicChildrenVideoParentTopicChildrenTopic)
|
||||
return json.Unmarshal(m, *v)
|
||||
default:
|
||||
return fmt.Errorf(
|
||||
`Unexpected concrete type for InterfaceNestingRootTopicChildrenVideoParentTopicChildrenContent: "%v"`, tn.TypeName)
|
||||
}
|
||||
}
|
||||
|
||||
// InterfaceNestingRootTopicChildrenVideoParentTopicChildrenTopic includes the requested fields of the GraphQL type Topic.
|
||||
type InterfaceNestingRootTopicChildrenVideoParentTopicChildrenTopic struct {
|
||||
Typename string `json:"__typename"`
|
||||
// ID is the identifier of the content.
|
||||
Id testutil.ID `json:"id"`
|
||||
}
|
||||
|
||||
// InterfaceNestingRootTopicChildrenVideoParentTopicChildrenVideo includes the requested fields of the GraphQL type Video.
|
||||
type InterfaceNestingRootTopicChildrenVideoParentTopicChildrenVideo struct {
|
||||
Typename string `json:"__typename"`
|
||||
// ID is the identifier of the content.
|
||||
Id testutil.ID `json:"id"`
|
||||
Id testutil.ID `json:"id"`
|
||||
Parent InterfaceNestingRootTopicChildrenParentTopic `json:"parent"`
|
||||
}
|
||||
|
||||
func InterfaceNesting(
|
||||
|
||||
+141
-3
@@ -18,21 +18,65 @@ type InterfaceNoFragmentsQueryRandomItemArticle struct {
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
// InterfaceNoFragmentsQueryRandomItemContent includes the requested fields of the GraphQL type Content.
|
||||
// InterfaceNoFragmentsQueryRandomItemContent includes the requested fields of the GraphQL interface Content.
|
||||
//
|
||||
// InterfaceNoFragmentsQueryRandomItemContent is implemented by the following types:
|
||||
// InterfaceNoFragmentsQueryRandomItemArticle
|
||||
// InterfaceNoFragmentsQueryRandomItemVideo
|
||||
// InterfaceNoFragmentsQueryRandomItemTopic
|
||||
//
|
||||
// The GraphQL type's documentation follows.
|
||||
//
|
||||
// Content is implemented by various types like Article, Video, and Topic.
|
||||
type InterfaceNoFragmentsQueryRandomItemContent interface {
|
||||
implementsGraphQLInterfaceInterfaceNoFragmentsQueryRandomItemContent()
|
||||
// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
|
||||
GetTypename() string
|
||||
// GetId returns the interface-field "id" from its implementation.
|
||||
// The GraphQL interface field's documentation follows.
|
||||
//
|
||||
// ID is the identifier of the content.
|
||||
GetId() testutil.ID
|
||||
// GetName returns the interface-field "name" from its implementation.
|
||||
GetName() string
|
||||
}
|
||||
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemArticle) implementsGraphQLInterfaceInterfaceNoFragmentsQueryRandomItemContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceNoFragmentsQueryRandomItemContent.
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemArticle) GetTypename() string { return v.Typename }
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceNoFragmentsQueryRandomItemContent.
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemArticle) GetId() testutil.ID { return v.Id }
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceNoFragmentsQueryRandomItemContent.
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemArticle) GetName() string { return v.Name }
|
||||
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemVideo) implementsGraphQLInterfaceInterfaceNoFragmentsQueryRandomItemContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceNoFragmentsQueryRandomItemContent.
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemVideo) GetTypename() string { return v.Typename }
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceNoFragmentsQueryRandomItemContent.
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemVideo) GetId() testutil.ID { return v.Id }
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceNoFragmentsQueryRandomItemContent.
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemVideo) GetName() string { return v.Name }
|
||||
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemTopic) implementsGraphQLInterfaceInterfaceNoFragmentsQueryRandomItemContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceNoFragmentsQueryRandomItemContent.
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemTopic) GetTypename() string { return v.Typename }
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceNoFragmentsQueryRandomItemContent.
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemTopic) GetId() testutil.ID { return v.Id }
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceNoFragmentsQueryRandomItemContent.
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemTopic) GetName() string { return v.Name }
|
||||
|
||||
func __unmarshalInterfaceNoFragmentsQueryRandomItemContent(v *InterfaceNoFragmentsQueryRandomItemContent, m json.RawMessage) error {
|
||||
if string(m) == "null" {
|
||||
return nil
|
||||
@@ -86,21 +130,71 @@ type InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle struct {
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
// InterfaceNoFragmentsQueryRandomItemWithTypeNameContent includes the requested fields of the GraphQL type Content.
|
||||
// InterfaceNoFragmentsQueryRandomItemWithTypeNameContent includes the requested fields of the GraphQL interface Content.
|
||||
//
|
||||
// InterfaceNoFragmentsQueryRandomItemWithTypeNameContent is implemented by the following types:
|
||||
// InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle
|
||||
// InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo
|
||||
// InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic
|
||||
//
|
||||
// The GraphQL type's documentation follows.
|
||||
//
|
||||
// Content is implemented by various types like Article, Video, and Topic.
|
||||
type InterfaceNoFragmentsQueryRandomItemWithTypeNameContent interface {
|
||||
implementsGraphQLInterfaceInterfaceNoFragmentsQueryRandomItemWithTypeNameContent()
|
||||
// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
|
||||
GetTypename() string
|
||||
// GetId returns the interface-field "id" from its implementation.
|
||||
// The GraphQL interface field's documentation follows.
|
||||
//
|
||||
// ID is the identifier of the content.
|
||||
GetId() testutil.ID
|
||||
// GetName returns the interface-field "name" from its implementation.
|
||||
GetName() string
|
||||
}
|
||||
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle) implementsGraphQLInterfaceInterfaceNoFragmentsQueryRandomItemWithTypeNameContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceNoFragmentsQueryRandomItemWithTypeNameContent.
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle) GetTypename() string {
|
||||
return v.Typename
|
||||
}
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceNoFragmentsQueryRandomItemWithTypeNameContent.
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle) GetId() testutil.ID { return v.Id }
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceNoFragmentsQueryRandomItemWithTypeNameContent.
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameArticle) GetName() string { return v.Name }
|
||||
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo) implementsGraphQLInterfaceInterfaceNoFragmentsQueryRandomItemWithTypeNameContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceNoFragmentsQueryRandomItemWithTypeNameContent.
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo) GetTypename() string {
|
||||
return v.Typename
|
||||
}
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceNoFragmentsQueryRandomItemWithTypeNameContent.
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo) GetId() testutil.ID { return v.Id }
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceNoFragmentsQueryRandomItemWithTypeNameContent.
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameVideo) GetName() string { return v.Name }
|
||||
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic) implementsGraphQLInterfaceInterfaceNoFragmentsQueryRandomItemWithTypeNameContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceNoFragmentsQueryRandomItemWithTypeNameContent.
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic) GetTypename() string {
|
||||
return v.Typename
|
||||
}
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceNoFragmentsQueryRandomItemWithTypeNameContent.
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic) GetId() testutil.ID { return v.Id }
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceNoFragmentsQueryRandomItemWithTypeNameContent.
|
||||
func (v *InterfaceNoFragmentsQueryRandomItemWithTypeNameTopic) GetName() string { return v.Name }
|
||||
|
||||
func __unmarshalInterfaceNoFragmentsQueryRandomItemWithTypeNameContent(v *InterfaceNoFragmentsQueryRandomItemWithTypeNameContent, m json.RawMessage) error {
|
||||
if string(m) == "null" {
|
||||
return nil
|
||||
@@ -217,21 +311,65 @@ type InterfaceNoFragmentsQueryWithPointerArticle struct {
|
||||
Name *string `json:"name"`
|
||||
}
|
||||
|
||||
// InterfaceNoFragmentsQueryWithPointerContent includes the requested fields of the GraphQL type Content.
|
||||
// InterfaceNoFragmentsQueryWithPointerContent includes the requested fields of the GraphQL interface Content.
|
||||
//
|
||||
// InterfaceNoFragmentsQueryWithPointerContent is implemented by the following types:
|
||||
// InterfaceNoFragmentsQueryWithPointerArticle
|
||||
// InterfaceNoFragmentsQueryWithPointerVideo
|
||||
// InterfaceNoFragmentsQueryWithPointerTopic
|
||||
//
|
||||
// The GraphQL type's documentation follows.
|
||||
//
|
||||
// Content is implemented by various types like Article, Video, and Topic.
|
||||
type InterfaceNoFragmentsQueryWithPointerContent interface {
|
||||
implementsGraphQLInterfaceInterfaceNoFragmentsQueryWithPointerContent()
|
||||
// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
|
||||
GetTypename() string
|
||||
// GetId returns the interface-field "id" from its implementation.
|
||||
// The GraphQL interface field's documentation follows.
|
||||
//
|
||||
// ID is the identifier of the content.
|
||||
GetId() *testutil.ID
|
||||
// GetName returns the interface-field "name" from its implementation.
|
||||
GetName() *string
|
||||
}
|
||||
|
||||
func (v *InterfaceNoFragmentsQueryWithPointerArticle) implementsGraphQLInterfaceInterfaceNoFragmentsQueryWithPointerContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceNoFragmentsQueryWithPointerContent.
|
||||
func (v *InterfaceNoFragmentsQueryWithPointerArticle) GetTypename() string { return v.Typename }
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceNoFragmentsQueryWithPointerContent.
|
||||
func (v *InterfaceNoFragmentsQueryWithPointerArticle) GetId() *testutil.ID { return v.Id }
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceNoFragmentsQueryWithPointerContent.
|
||||
func (v *InterfaceNoFragmentsQueryWithPointerArticle) GetName() *string { return v.Name }
|
||||
|
||||
func (v *InterfaceNoFragmentsQueryWithPointerVideo) implementsGraphQLInterfaceInterfaceNoFragmentsQueryWithPointerContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceNoFragmentsQueryWithPointerContent.
|
||||
func (v *InterfaceNoFragmentsQueryWithPointerVideo) GetTypename() string { return v.Typename }
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceNoFragmentsQueryWithPointerContent.
|
||||
func (v *InterfaceNoFragmentsQueryWithPointerVideo) GetId() *testutil.ID { return v.Id }
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceNoFragmentsQueryWithPointerContent.
|
||||
func (v *InterfaceNoFragmentsQueryWithPointerVideo) GetName() *string { return v.Name }
|
||||
|
||||
func (v *InterfaceNoFragmentsQueryWithPointerTopic) implementsGraphQLInterfaceInterfaceNoFragmentsQueryWithPointerContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface InterfaceNoFragmentsQueryWithPointerContent.
|
||||
func (v *InterfaceNoFragmentsQueryWithPointerTopic) GetTypename() string { return v.Typename }
|
||||
|
||||
// GetId is a part of, and documented with, the interface InterfaceNoFragmentsQueryWithPointerContent.
|
||||
func (v *InterfaceNoFragmentsQueryWithPointerTopic) GetId() *testutil.ID { return v.Id }
|
||||
|
||||
// GetName is a part of, and documented with, the interface InterfaceNoFragmentsQueryWithPointerContent.
|
||||
func (v *InterfaceNoFragmentsQueryWithPointerTopic) GetName() *string { return v.Name }
|
||||
|
||||
func __unmarshalInterfaceNoFragmentsQueryWithPointerContent(v *InterfaceNoFragmentsQueryWithPointerContent, m json.RawMessage) error {
|
||||
if string(m) == "null" {
|
||||
return nil
|
||||
|
||||
Vendored
+15
-1
@@ -14,19 +14,33 @@ type UnionNoFragmentsQueryRandomLeafArticle struct {
|
||||
Typename string `json:"__typename"`
|
||||
}
|
||||
|
||||
// UnionNoFragmentsQueryRandomLeafLeafContent includes the requested fields of the GraphQL type LeafContent.
|
||||
// UnionNoFragmentsQueryRandomLeafLeafContent includes the requested fields of the GraphQL interface LeafContent.
|
||||
//
|
||||
// UnionNoFragmentsQueryRandomLeafLeafContent is implemented by the following types:
|
||||
// UnionNoFragmentsQueryRandomLeafArticle
|
||||
// UnionNoFragmentsQueryRandomLeafVideo
|
||||
//
|
||||
// The GraphQL type's documentation follows.
|
||||
//
|
||||
// LeafContent represents content items that can't have child-nodes.
|
||||
type UnionNoFragmentsQueryRandomLeafLeafContent interface {
|
||||
implementsGraphQLInterfaceUnionNoFragmentsQueryRandomLeafLeafContent()
|
||||
// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
|
||||
GetTypename() string
|
||||
}
|
||||
|
||||
func (v *UnionNoFragmentsQueryRandomLeafArticle) implementsGraphQLInterfaceUnionNoFragmentsQueryRandomLeafLeafContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface UnionNoFragmentsQueryRandomLeafLeafContent.
|
||||
func (v *UnionNoFragmentsQueryRandomLeafArticle) GetTypename() string { return v.Typename }
|
||||
|
||||
func (v *UnionNoFragmentsQueryRandomLeafVideo) implementsGraphQLInterfaceUnionNoFragmentsQueryRandomLeafLeafContent() {
|
||||
}
|
||||
|
||||
// GetTypename is a part of, and documented with, the interface UnionNoFragmentsQueryRandomLeafLeafContent.
|
||||
func (v *UnionNoFragmentsQueryRandomLeafVideo) GetTypename() string { return v.Typename }
|
||||
|
||||
func __unmarshalUnionNoFragmentsQueryRandomLeafLeafContent(v *UnionNoFragmentsQueryRandomLeafLeafContent, m json.RawMessage) error {
|
||||
if string(m) == "null" {
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user