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