Clean up, test, and document ContextType and ClientGetter options (#77)
## Summary: ContextType is in use at Khan as a part of our ka-context system; it basically just lets you configure the type to pass as the `ctx` argument to genqlient helpers (or say to omit such an argument). ClientGetter I wrote thinking we might use it; then we didn't (because we have a few different clients we may use) but it's not much code and may be helpful to others. In this commit I clean up, document, and add tests for both options. The cleanup is mainly for ClientGetter, which was kind of broken before because it was a Go snippet but couldn't specify imports. I was thinking maybe you want to be able to write `ctx.Something()`, but I just don't see how to make it work, so I made it a function of context, which is probably the better idea anyway. Additionally, I improved the documentation for both, and added tests for those and several other config options that weren't completely tested. Fixes #5. Issue: https://github.com/Khan/genqlient/issues/5 ## Test plan: make check Author: benjaminjkraft Reviewers: 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/77
This commit is contained in:
@@ -47,8 +47,10 @@ func getViewer(
|
|||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
client graphql.Client,
|
client graphql.Client,
|
||||||
) (*getViewerResponse, error) {
|
) (*getViewerResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval getViewerResponse
|
var retval getViewerResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
ctx,
|
ctx,
|
||||||
"getViewer",
|
"getViewer",
|
||||||
`
|
`
|
||||||
@@ -75,8 +77,10 @@ func getUser(
|
|||||||
"Login": login,
|
"Login": login,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval getUserResponse
|
var retval getUserResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
ctx,
|
ctx,
|
||||||
"getUser",
|
"getUser",
|
||||||
`
|
`
|
||||||
|
|||||||
+21
-8
@@ -53,16 +53,29 @@ type Config struct {
|
|||||||
// Generated
|
// Generated
|
||||||
Package string `yaml:"package"`
|
Package string `yaml:"package"`
|
||||||
|
|
||||||
// Set to the fully-qualified name of a type which generated helpers should
|
// Set to the fully-qualified name of a Go type which generated helpers
|
||||||
// accept and use as the context.Context for HTTP requests. Defaults to
|
// should accept and use as the context.Context for HTTP requests.
|
||||||
// context.Context; set to the empty string to omit context entirely.
|
//
|
||||||
|
// Defaults to context.Context; set to the empty string to omit context
|
||||||
|
// entirely (i.e. use context.Background()). Must be a type which
|
||||||
|
// implements context.Context.
|
||||||
ContextType string `yaml:"context_type"`
|
ContextType string `yaml:"context_type"`
|
||||||
|
|
||||||
// If set, a snippet of Go code to get a *graphql.Client from the context
|
// If set, a function to get a graphql.Client, perhaps from the context.
|
||||||
// (which will be named ctx). For example, this might do
|
// By default, the client must be passed explicitly to each genqlient
|
||||||
// ctx.Value(myKey).(*graphql.Client). If omitted, client must be
|
// generated query-helper.
|
||||||
// passed to each method explicitly.
|
//
|
||||||
// TODO(#5): This is a bit broken, fix it.
|
// This is useful if you have a shared client, either a global, or
|
||||||
|
// available from context, and don't want to pass it explicitly. In this
|
||||||
|
// case the signature of the genqlient-generated helpers will omit the
|
||||||
|
// `graphql.Context` and they will call this function instead.
|
||||||
|
//
|
||||||
|
// Must be the fully-qualified name of a function which accepts a context
|
||||||
|
// (of the type configured as ContextType (above), which defaults to
|
||||||
|
// `context.Context`, or a function of no arguments if ContextType is set
|
||||||
|
// to the empty string) and returns (graphql.Client, error). If the
|
||||||
|
// client-getter returns an error, the helper will return the error
|
||||||
|
// without making a query.
|
||||||
ClientGetter string `yaml:"client_getter"`
|
ClientGetter string `yaml:"client_getter"`
|
||||||
|
|
||||||
// A map from GraphQL type name to Go fully-qualified type name to override
|
// A map from GraphQL type name to Go fully-qualified type name to override
|
||||||
|
|||||||
+22
-11
@@ -7,6 +7,7 @@ package generate
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
"go/format"
|
"go/format"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -66,7 +67,7 @@ type argument struct {
|
|||||||
Options *GenqlientDirective
|
Options *GenqlientDirective
|
||||||
}
|
}
|
||||||
|
|
||||||
func newGenerator(config *Config, schema *ast.Schema) *generator {
|
func newGenerator(config *Config, schema *ast.Schema) (*generator, error) {
|
||||||
g := generator{
|
g := generator{
|
||||||
Config: config,
|
Config: config,
|
||||||
typeMap: map[string]goType{},
|
typeMap: map[string]goType{},
|
||||||
@@ -76,20 +77,26 @@ func newGenerator(config *Config, schema *ast.Schema) *generator {
|
|||||||
schema: schema,
|
schema: schema,
|
||||||
}
|
}
|
||||||
|
|
||||||
if g.Config.ClientGetter == "" {
|
_, err := g.addRef("github.com/Khan/genqlient/graphql.Client")
|
||||||
_, err := g.addRef("github.com/Khan/genqlient/graphql.Client")
|
if err != nil {
|
||||||
if err != nil {
|
return nil, err
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if g.Config.ContextType != "" {
|
|
||||||
_, err := g.addRef(g.Config.ContextType)
|
if g.Config.ClientGetter != "" {
|
||||||
|
_, err := g.addRef(g.Config.ClientGetter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
return nil, fmt.Errorf("invalid client_getter: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return &g
|
if g.Config.ContextType != "" {
|
||||||
|
_, err := g.addRef(g.Config.ContextType)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("invalid context_type: %w", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return &g, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *generator) Types() (string, error) {
|
func (g *generator) Types() (string, error) {
|
||||||
@@ -305,7 +312,11 @@ func Generate(config *Config) (map[string][]byte, error) {
|
|||||||
// Step 2: For each operation, convert it into data structures representing
|
// Step 2: For each operation, convert it into data structures representing
|
||||||
// Go types (defined in types.go). The bulk of this logic is in
|
// Go types (defined in types.go). The bulk of this logic is in
|
||||||
// convert.go.
|
// convert.go.
|
||||||
g := newGenerator(config, schema)
|
g, err := newGenerator(config, schema)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
for _, op := range document.Operations {
|
for _, op := range document.Operations {
|
||||||
if err = g.addOperation(op); err != nil {
|
if err = g.addOperation(op); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
+120
-17
@@ -18,6 +18,36 @@ const (
|
|||||||
errorsDir = "testdata/errors"
|
errorsDir = "testdata/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// buildGoFile returns an error if the given Go code is not valid.
|
||||||
|
//
|
||||||
|
// namePrefix is used for the temp-file, and is just for debugging.
|
||||||
|
func buildGoFile(namePrefix string, content []byte) error {
|
||||||
|
// We need to put this within the current module, rather than in
|
||||||
|
// /tmp, so that it can access internal/testutil.
|
||||||
|
f, err := ioutil.TempFile("./testdata/tmp", namePrefix+"_*.go")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
f.Close()
|
||||||
|
os.Remove(f.Name())
|
||||||
|
}()
|
||||||
|
|
||||||
|
_, err = f.Write(content)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd := exec.Command("go", "build", f.Name())
|
||||||
|
cmd.Stdout = os.Stdout
|
||||||
|
cmd.Stderr = os.Stderr
|
||||||
|
err = cmd.Run()
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("generated code does not compile: %w", err)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// TestGenerate is a snapshot-based test of code-generation.
|
// TestGenerate is a snapshot-based test of code-generation.
|
||||||
//
|
//
|
||||||
// This file just has the test runner; the actual data is all in
|
// This file just has the test runner; the actual data is all in
|
||||||
@@ -91,29 +121,102 @@ func TestGenerate(t *testing.T) {
|
|||||||
"https://github.com/Khan/genqlient/issues/43")
|
"https://github.com/Khan/genqlient/issues/43")
|
||||||
}
|
}
|
||||||
|
|
||||||
goContent := generated[goFilename]
|
err := buildGoFile(sourceFilename, generated[goFilename])
|
||||||
// We need to put this within the current module, rather than in
|
|
||||||
// /tmp, so that it can access internal/testutil.
|
|
||||||
f, err := ioutil.TempFile("./testdata/tmp", sourceFilename+"_*.go")
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
defer func() {
|
})
|
||||||
f.Close()
|
})
|
||||||
os.Remove(f.Name())
|
}
|
||||||
}()
|
}
|
||||||
|
|
||||||
_, err = f.Write(goContent)
|
// TestGenerateWithConfig tests several configuration options that affect
|
||||||
if err != nil {
|
// generated code but don't require particular query structures to test.
|
||||||
t.Fatal(err)
|
//
|
||||||
|
// It runs a simple query from TestGenerate with several different genqlient
|
||||||
|
// configurations. It uses snapshots, just like TestGenerate.
|
||||||
|
func TestGenerateWithConfig(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
fakeConfigFilename string
|
||||||
|
config *Config // omits Schema and Operations, set below.
|
||||||
|
}{
|
||||||
|
{"DefaultConfig", "genqlient.yaml", defaultConfig},
|
||||||
|
{"Subpackage", "genqlient.yaml", &Config{
|
||||||
|
Generated: "mypkg/myfile.go",
|
||||||
|
ContextType: "context.Context", // (from defaultConfig)
|
||||||
|
}},
|
||||||
|
{"SubpackageConfig", "mypkg/genqlient.yaml", &Config{
|
||||||
|
Generated: "myfile.go", // (relative to genqlient.yaml)
|
||||||
|
ContextType: "context.Context",
|
||||||
|
}},
|
||||||
|
{"PackageName", "genqlient.yaml", &Config{
|
||||||
|
Generated: "myfile.go",
|
||||||
|
Package: "mypkg",
|
||||||
|
ContextType: "context.Context",
|
||||||
|
}},
|
||||||
|
{"ExportOperations", "genqlient.yaml", &Config{
|
||||||
|
Generated: "generated.go",
|
||||||
|
ExportOperations: "operations.json",
|
||||||
|
ContextType: "context.Context",
|
||||||
|
}},
|
||||||
|
{"CustomContext", "genqlient.yaml", &Config{
|
||||||
|
Generated: "generated.go",
|
||||||
|
ContextType: "github.com/Khan/genqlient/internal/testutil.MyContext",
|
||||||
|
}},
|
||||||
|
{"NoContext", "genqlient.yaml", &Config{
|
||||||
|
Generated: "generated.go",
|
||||||
|
ContextType: "",
|
||||||
|
}},
|
||||||
|
{"ClientGetter", "genqlient.yaml", &Config{
|
||||||
|
Generated: "generated.go",
|
||||||
|
ClientGetter: "github.com/Khan/genqlient/internal/testutil.GetClientFromContext",
|
||||||
|
ContextType: "context.Context",
|
||||||
|
}},
|
||||||
|
{"ClientGetterCustomContext", "genqlient.yaml", &Config{
|
||||||
|
Generated: "generated.go",
|
||||||
|
ClientGetter: "github.com/Khan/genqlient/internal/testutil.GetClientFromMyContext",
|
||||||
|
ContextType: "github.com/Khan/genqlient/internal/testutil.MyContext",
|
||||||
|
}},
|
||||||
|
{"ClientGetterNoContext", "genqlient.yaml", &Config{
|
||||||
|
Generated: "generated.go",
|
||||||
|
ClientGetter: "github.com/Khan/genqlient/internal/testutil.GetClientFromNowhere",
|
||||||
|
ContextType: "",
|
||||||
|
}},
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceFilename := "SimpleQuery.graphql"
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
config := test.config
|
||||||
|
t.Run(test.name, func(t *testing.T) {
|
||||||
|
err := config.ValidateAndFillDefaults(
|
||||||
|
filepath.Join(dataDir, test.fakeConfigFilename))
|
||||||
|
config.Schema = filepath.Join(dataDir, "schema.graphql")
|
||||||
|
config.Operations = []string{filepath.Join(dataDir, sourceFilename)}
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
generated, err := Generate(config)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for filename, content := range generated {
|
||||||
|
t.Run(filename, func(t *testing.T) {
|
||||||
|
testutil.Cupaloy.SnapshotT(t, string(content))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Run("Build", func(t *testing.T) {
|
||||||
|
if testing.Short() {
|
||||||
|
t.Skip("skipping build due to -short")
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := exec.Command("go", "build", f.Name())
|
err := buildGoFile(sourceFilename,
|
||||||
cmd.Stdout = os.Stdout
|
generated[config.Generated])
|
||||||
cmd.Stderr = os.Stderr
|
|
||||||
err = cmd.Run()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(fmt.Errorf("generated code does not compile: %w", err))
|
t.Error(err)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -43,9 +43,18 @@ func {{.Name}}(
|
|||||||
}
|
}
|
||||||
{{end}}
|
{{end}}
|
||||||
{{end}}
|
{{end}}
|
||||||
|
{{end -}}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
{{if $.Config.ClientGetter -}}
|
||||||
|
client, err := {{ref $.Config.ClientGetter}}({{if $.Config.ContextType}}ctx{{else}}{{end}})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
var retval {{.ResponseName}}
|
var retval {{.ResponseName}}
|
||||||
err := {{if $.Config.ClientGetter}}{{$.Config.ClientGetter}}{{else}}client{{end}}.MakeRequest(
|
err = client.MakeRequest(
|
||||||
{{if $.Config.ContextType}}ctx{{else}}nil{{end}},
|
{{if $.Config.ContextType}}ctx{{else}}nil{{end}},
|
||||||
"{{.Name}}",
|
"{{.Name}}",
|
||||||
`{{.Body}}`,
|
`{{.Body}}`,
|
||||||
|
|||||||
+3
-1
@@ -872,8 +872,10 @@ type ComplexInlineFragmentsRootTopic struct {
|
|||||||
func ComplexInlineFragments(
|
func ComplexInlineFragments(
|
||||||
client graphql.Client,
|
client graphql.Client,
|
||||||
) (*ComplexInlineFragmentsResponse, error) {
|
) (*ComplexInlineFragmentsResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval ComplexInlineFragmentsResponse
|
var retval ComplexInlineFragmentsResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"ComplexInlineFragments",
|
"ComplexInlineFragments",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -23,8 +23,10 @@ func convertTimezone(
|
|||||||
"tz": tz,
|
"tz": tz,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval convertTimezoneResponse
|
var retval convertTimezoneResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"convertTimezone",
|
"convertTimezone",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -15,8 +15,10 @@ type EmptyInterfaceResponse struct {
|
|||||||
func EmptyInterface(
|
func EmptyInterface(
|
||||||
client graphql.Client,
|
client graphql.Client,
|
||||||
) (*EmptyInterfaceResponse, error) {
|
) (*EmptyInterfaceResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval EmptyInterfaceResponse
|
var retval EmptyInterfaceResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"EmptyInterface",
|
"EmptyInterface",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -46,8 +46,10 @@ func InputEnumQuery(
|
|||||||
"role": role,
|
"role": role,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval InputEnumQueryResponse
|
var retval InputEnumQueryResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"InputEnumQuery",
|
"InputEnumQuery",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -64,8 +64,10 @@ func InputObjectQuery(
|
|||||||
"query": query,
|
"query": query,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval InputObjectQueryResponse
|
var retval InputObjectQueryResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"InputObjectQuery",
|
"InputObjectQuery",
|
||||||
`
|
`
|
||||||
|
|||||||
Vendored
+3
-1
@@ -333,8 +333,10 @@ type InterfaceListFieldWithPointerTopicChildrenVideo struct {
|
|||||||
func InterfaceListField(
|
func InterfaceListField(
|
||||||
client graphql.Client,
|
client graphql.Client,
|
||||||
) (*InterfaceListFieldResponse, error) {
|
) (*InterfaceListFieldResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval InterfaceListFieldResponse
|
var retval InterfaceListFieldResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"InterfaceListField",
|
"InterfaceListField",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -343,8 +343,10 @@ type InterfaceListOfListOfListsFieldWithPointerVideo struct {
|
|||||||
func InterfaceListOfListOfListsField(
|
func InterfaceListOfListOfListsField(
|
||||||
client graphql.Client,
|
client graphql.Client,
|
||||||
) (*InterfaceListOfListOfListsFieldResponse, error) {
|
) (*InterfaceListOfListOfListsFieldResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval InterfaceListOfListOfListsFieldResponse
|
var retval InterfaceListOfListOfListsFieldResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"InterfaceListOfListOfListsField",
|
"InterfaceListOfListOfListsField",
|
||||||
`
|
`
|
||||||
|
|||||||
Vendored
+3
-1
@@ -334,8 +334,10 @@ type InterfaceNestingRootTopicChildrenVideo struct {
|
|||||||
func InterfaceNesting(
|
func InterfaceNesting(
|
||||||
client graphql.Client,
|
client graphql.Client,
|
||||||
) (*InterfaceNestingResponse, error) {
|
) (*InterfaceNestingResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval InterfaceNestingResponse
|
var retval InterfaceNestingResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"InterfaceNesting",
|
"InterfaceNesting",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -430,8 +430,10 @@ type InterfaceNoFragmentsQueryWithPointerVideo struct {
|
|||||||
func InterfaceNoFragmentsQuery(
|
func InterfaceNoFragmentsQuery(
|
||||||
client graphql.Client,
|
client graphql.Client,
|
||||||
) (*InterfaceNoFragmentsQueryResponse, error) {
|
) (*InterfaceNoFragmentsQueryResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval InterfaceNoFragmentsQueryResponse
|
var retval InterfaceNoFragmentsQueryResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"InterfaceNoFragmentsQuery",
|
"InterfaceNoFragmentsQuery",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -35,8 +35,10 @@ func ListInputQuery(
|
|||||||
"names": names,
|
"names": names,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval ListInputQueryResponse
|
var retval ListInputQueryResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"ListInputQuery",
|
"ListInputQuery",
|
||||||
`
|
`
|
||||||
|
|||||||
Vendored
+3
-1
@@ -14,8 +14,10 @@ type ListOfListsOfListsResponse struct {
|
|||||||
func ListOfListsOfLists(
|
func ListOfListsOfLists(
|
||||||
client graphql.Client,
|
client graphql.Client,
|
||||||
) (*ListOfListsOfListsResponse, error) {
|
) (*ListOfListsOfListsResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval ListOfListsOfListsResponse
|
var retval ListOfListsOfListsResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"ListOfListsOfLists",
|
"ListOfListsOfLists",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -103,8 +103,10 @@ func OmitEmptyQuery(
|
|||||||
variables["tz"] = tz
|
variables["tz"] = tz
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval OmitEmptyQueryResponse
|
var retval OmitEmptyQueryResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"OmitEmptyQuery",
|
"OmitEmptyQuery",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -91,8 +91,10 @@ func PointersQuery(
|
|||||||
"tz": tz,
|
"tz": tz,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval PointersQueryResponse
|
var retval PointersQueryResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"PointersQuery",
|
"PointersQuery",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -91,8 +91,10 @@ func PointersQuery(
|
|||||||
"tz": tz,
|
"tz": tz,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval PointersQueryResponse
|
var retval PointersQueryResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"PointersQuery",
|
"PointersQuery",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -45,8 +45,10 @@ func GetPokemonSiblings(
|
|||||||
"input": input,
|
"input": input,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval GetPokemonSiblingsResponse
|
var retval GetPokemonSiblingsResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"GetPokemonSiblings",
|
"GetPokemonSiblings",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -34,8 +34,10 @@ type QueryWithAliasUser struct {
|
|||||||
func QueryWithAlias(
|
func QueryWithAlias(
|
||||||
client graphql.Client,
|
client graphql.Client,
|
||||||
) (*QueryWithAliasResponse, error) {
|
) (*QueryWithAliasResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval QueryWithAliasResponse
|
var retval QueryWithAliasResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"QueryWithAlias",
|
"QueryWithAlias",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -34,8 +34,10 @@ type QueryWithDoubleAliasUser struct {
|
|||||||
func QueryWithDoubleAlias(
|
func QueryWithDoubleAlias(
|
||||||
client graphql.Client,
|
client graphql.Client,
|
||||||
) (*QueryWithDoubleAliasResponse, error) {
|
) (*QueryWithDoubleAliasResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval QueryWithDoubleAliasResponse
|
var retval QueryWithDoubleAliasResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"QueryWithDoubleAlias",
|
"QueryWithDoubleAlias",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -53,8 +53,10 @@ const (
|
|||||||
func QueryWithEnums(
|
func QueryWithEnums(
|
||||||
client graphql.Client,
|
client graphql.Client,
|
||||||
) (*QueryWithEnumsResponse, error) {
|
) (*QueryWithEnumsResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval QueryWithEnumsResponse
|
var retval QueryWithEnumsResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"QueryWithEnums",
|
"QueryWithEnums",
|
||||||
`
|
`
|
||||||
|
|||||||
Vendored
+3
-1
@@ -29,8 +29,10 @@ type QueryWithSlicesUser struct {
|
|||||||
func QueryWithSlices(
|
func QueryWithSlices(
|
||||||
client graphql.Client,
|
client graphql.Client,
|
||||||
) (*QueryWithSlicesResponse, error) {
|
) (*QueryWithSlicesResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval QueryWithSlicesResponse
|
var retval QueryWithSlicesResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"QueryWithSlices",
|
"QueryWithSlices",
|
||||||
`
|
`
|
||||||
|
|||||||
Vendored
+3
-1
@@ -32,8 +32,10 @@ type QueryWithStructsUserAuthMethodsAuthMethod struct {
|
|||||||
func QueryWithStructs(
|
func QueryWithStructs(
|
||||||
client graphql.Client,
|
client graphql.Client,
|
||||||
) (*QueryWithStructsResponse, error) {
|
) (*QueryWithStructsResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval QueryWithStructsResponse
|
var retval QueryWithStructsResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"QueryWithStructs",
|
"QueryWithStructs",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -163,8 +163,10 @@ func (v *SimpleInlineFragmentResponse) UnmarshalJSON(b []byte) error {
|
|||||||
func SimpleInlineFragment(
|
func SimpleInlineFragment(
|
||||||
client graphql.Client,
|
client graphql.Client,
|
||||||
) (*SimpleInlineFragmentResponse, error) {
|
) (*SimpleInlineFragmentResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval SimpleInlineFragmentResponse
|
var retval SimpleInlineFragmentResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"SimpleInlineFragment",
|
"SimpleInlineFragment",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -35,8 +35,10 @@ func SimpleInputQuery(
|
|||||||
"name": name,
|
"name": name,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval SimpleInputQueryResponse
|
var retval SimpleInputQueryResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"SimpleInputQuery",
|
"SimpleInputQuery",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -36,8 +36,10 @@ func SimpleMutation(
|
|||||||
"name": name,
|
"name": name,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval SimpleMutationResponse
|
var retval SimpleMutationResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"SimpleMutation",
|
"SimpleMutation",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -30,8 +30,10 @@ type SimpleQueryUser struct {
|
|||||||
func SimpleQuery(
|
func SimpleQuery(
|
||||||
client graphql.Client,
|
client graphql.Client,
|
||||||
) (*SimpleQueryResponse, error) {
|
) (*SimpleQueryResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval SimpleQueryResponse
|
var retval SimpleQueryResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"SimpleQuery",
|
"SimpleQuery",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -31,8 +31,10 @@ type TypeNameQueryUser struct {
|
|||||||
func TypeNameQuery(
|
func TypeNameQuery(
|
||||||
client graphql.Client,
|
client graphql.Client,
|
||||||
) (*TypeNameQueryResponse, error) {
|
) (*TypeNameQueryResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval TypeNameQueryResponse
|
var retval TypeNameQueryResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"TypeNameQuery",
|
"TypeNameQuery",
|
||||||
`
|
`
|
||||||
|
|||||||
Vendored
+3
-1
@@ -111,8 +111,10 @@ func (v *UnionNoFragmentsQueryResponse) UnmarshalJSON(b []byte) error {
|
|||||||
func UnionNoFragmentsQuery(
|
func UnionNoFragmentsQuery(
|
||||||
client graphql.Client,
|
client graphql.Client,
|
||||||
) (*UnionNoFragmentsQueryResponse, error) {
|
) (*UnionNoFragmentsQueryResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval UnionNoFragmentsQueryResponse
|
var retval UnionNoFragmentsQueryResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"UnionNoFragmentsQuery",
|
"UnionNoFragmentsQuery",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -53,8 +53,10 @@ type UsesEnumTwiceQueryResponse struct {
|
|||||||
func UsesEnumTwiceQuery(
|
func UsesEnumTwiceQuery(
|
||||||
client graphql.Client,
|
client graphql.Client,
|
||||||
) (*UsesEnumTwiceQueryResponse, error) {
|
) (*UsesEnumTwiceQueryResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval UsesEnumTwiceQueryResponse
|
var retval UsesEnumTwiceQueryResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"UsesEnumTwiceQuery",
|
"UsesEnumTwiceQuery",
|
||||||
`
|
`
|
||||||
|
|||||||
+3
-1
@@ -64,8 +64,10 @@ func unexported(
|
|||||||
"query": query,
|
"query": query,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval unexportedResponse
|
var retval unexportedResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
nil,
|
nil,
|
||||||
"unexported",
|
"unexported",
|
||||||
`
|
`
|
||||||
|
|||||||
Vendored
+56
@@ -0,0 +1,56 @@
|
|||||||
|
package queries
|
||||||
|
|
||||||
|
// Code generated by github.com/Khan/genqlient, DO NOT EDIT.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/Khan/genqlient/internal/testutil"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SimpleQueryResponse is returned by SimpleQuery on success.
|
||||||
|
type SimpleQueryResponse struct {
|
||||||
|
// user looks up a user by some stuff.
|
||||||
|
//
|
||||||
|
// See UserQueryInput for what stuff is supported.
|
||||||
|
// If query is null, returns the current user.
|
||||||
|
User SimpleQueryUser `json:"user"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SimpleQueryUser includes the requested fields of the GraphQL type User.
|
||||||
|
// The GraphQL type's documentation follows.
|
||||||
|
//
|
||||||
|
// A User is a user!
|
||||||
|
type SimpleQueryUser struct {
|
||||||
|
// id is the user's ID.
|
||||||
|
//
|
||||||
|
// It is stable, unique, and opaque, like all good IDs.
|
||||||
|
Id string `json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func SimpleQuery(
|
||||||
|
ctx context.Context,
|
||||||
|
) (*SimpleQueryResponse, error) {
|
||||||
|
var err error
|
||||||
|
client, err := testutil.GetClientFromContext(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var retval SimpleQueryResponse
|
||||||
|
err = client.MakeRequest(
|
||||||
|
ctx,
|
||||||
|
"SimpleQuery",
|
||||||
|
`
|
||||||
|
query SimpleQuery {
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
&retval,
|
||||||
|
nil,
|
||||||
|
)
|
||||||
|
return &retval, err
|
||||||
|
}
|
||||||
|
|
||||||
+54
@@ -0,0 +1,54 @@
|
|||||||
|
package queries
|
||||||
|
|
||||||
|
// Code generated by github.com/Khan/genqlient, DO NOT EDIT.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/Khan/genqlient/internal/testutil"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SimpleQueryResponse is returned by SimpleQuery on success.
|
||||||
|
type SimpleQueryResponse struct {
|
||||||
|
// user looks up a user by some stuff.
|
||||||
|
//
|
||||||
|
// See UserQueryInput for what stuff is supported.
|
||||||
|
// If query is null, returns the current user.
|
||||||
|
User SimpleQueryUser `json:"user"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SimpleQueryUser includes the requested fields of the GraphQL type User.
|
||||||
|
// The GraphQL type's documentation follows.
|
||||||
|
//
|
||||||
|
// A User is a user!
|
||||||
|
type SimpleQueryUser struct {
|
||||||
|
// id is the user's ID.
|
||||||
|
//
|
||||||
|
// It is stable, unique, and opaque, like all good IDs.
|
||||||
|
Id string `json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func SimpleQuery(
|
||||||
|
ctx testutil.MyContext,
|
||||||
|
) (*SimpleQueryResponse, error) {
|
||||||
|
var err error
|
||||||
|
client, err := testutil.GetClientFromMyContext(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var retval SimpleQueryResponse
|
||||||
|
err = client.MakeRequest(
|
||||||
|
ctx,
|
||||||
|
"SimpleQuery",
|
||||||
|
`
|
||||||
|
query SimpleQuery {
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
&retval,
|
||||||
|
nil,
|
||||||
|
)
|
||||||
|
return &retval, err
|
||||||
|
}
|
||||||
|
|
||||||
+52
@@ -0,0 +1,52 @@
|
|||||||
|
package queries
|
||||||
|
|
||||||
|
// Code generated by github.com/Khan/genqlient, DO NOT EDIT.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/Khan/genqlient/internal/testutil"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SimpleQueryResponse is returned by SimpleQuery on success.
|
||||||
|
type SimpleQueryResponse struct {
|
||||||
|
// user looks up a user by some stuff.
|
||||||
|
//
|
||||||
|
// See UserQueryInput for what stuff is supported.
|
||||||
|
// If query is null, returns the current user.
|
||||||
|
User SimpleQueryUser `json:"user"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SimpleQueryUser includes the requested fields of the GraphQL type User.
|
||||||
|
// The GraphQL type's documentation follows.
|
||||||
|
//
|
||||||
|
// A User is a user!
|
||||||
|
type SimpleQueryUser struct {
|
||||||
|
// id is the user's ID.
|
||||||
|
//
|
||||||
|
// It is stable, unique, and opaque, like all good IDs.
|
||||||
|
Id string `json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func SimpleQuery() (*SimpleQueryResponse, error) {
|
||||||
|
var err error
|
||||||
|
client, err := testutil.GetClientFromNowhere()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var retval SimpleQueryResponse
|
||||||
|
err = client.MakeRequest(
|
||||||
|
nil,
|
||||||
|
"SimpleQuery",
|
||||||
|
`
|
||||||
|
query SimpleQuery {
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
&retval,
|
||||||
|
nil,
|
||||||
|
)
|
||||||
|
return &retval, err
|
||||||
|
}
|
||||||
|
|
||||||
Vendored
+52
@@ -0,0 +1,52 @@
|
|||||||
|
package queries
|
||||||
|
|
||||||
|
// Code generated by github.com/Khan/genqlient, DO NOT EDIT.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/Khan/genqlient/graphql"
|
||||||
|
"github.com/Khan/genqlient/internal/testutil"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SimpleQueryResponse is returned by SimpleQuery on success.
|
||||||
|
type SimpleQueryResponse struct {
|
||||||
|
// user looks up a user by some stuff.
|
||||||
|
//
|
||||||
|
// See UserQueryInput for what stuff is supported.
|
||||||
|
// If query is null, returns the current user.
|
||||||
|
User SimpleQueryUser `json:"user"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SimpleQueryUser includes the requested fields of the GraphQL type User.
|
||||||
|
// The GraphQL type's documentation follows.
|
||||||
|
//
|
||||||
|
// A User is a user!
|
||||||
|
type SimpleQueryUser struct {
|
||||||
|
// id is the user's ID.
|
||||||
|
//
|
||||||
|
// It is stable, unique, and opaque, like all good IDs.
|
||||||
|
Id string `json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func SimpleQuery(
|
||||||
|
ctx testutil.MyContext,
|
||||||
|
client graphql.Client,
|
||||||
|
) (*SimpleQueryResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
var retval SimpleQueryResponse
|
||||||
|
err = client.MakeRequest(
|
||||||
|
ctx,
|
||||||
|
"SimpleQuery",
|
||||||
|
`
|
||||||
|
query SimpleQuery {
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
&retval,
|
||||||
|
nil,
|
||||||
|
)
|
||||||
|
return &retval, err
|
||||||
|
}
|
||||||
|
|
||||||
Vendored
+53
@@ -0,0 +1,53 @@
|
|||||||
|
package queries
|
||||||
|
|
||||||
|
// Code generated by github.com/Khan/genqlient, DO NOT EDIT.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/Khan/genqlient/graphql"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SimpleQueryResponse is returned by SimpleQuery on success.
|
||||||
|
type SimpleQueryResponse struct {
|
||||||
|
// user looks up a user by some stuff.
|
||||||
|
//
|
||||||
|
// See UserQueryInput for what stuff is supported.
|
||||||
|
// If query is null, returns the current user.
|
||||||
|
User SimpleQueryUser `json:"user"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SimpleQueryUser includes the requested fields of the GraphQL type User.
|
||||||
|
// The GraphQL type's documentation follows.
|
||||||
|
//
|
||||||
|
// A User is a user!
|
||||||
|
type SimpleQueryUser struct {
|
||||||
|
// id is the user's ID.
|
||||||
|
//
|
||||||
|
// It is stable, unique, and opaque, like all good IDs.
|
||||||
|
Id string `json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func SimpleQuery(
|
||||||
|
ctx context.Context,
|
||||||
|
client graphql.Client,
|
||||||
|
) (*SimpleQueryResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
var retval SimpleQueryResponse
|
||||||
|
err = client.MakeRequest(
|
||||||
|
ctx,
|
||||||
|
"SimpleQuery",
|
||||||
|
`
|
||||||
|
query SimpleQuery {
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
&retval,
|
||||||
|
nil,
|
||||||
|
)
|
||||||
|
return &retval, err
|
||||||
|
}
|
||||||
|
|
||||||
Vendored
+53
@@ -0,0 +1,53 @@
|
|||||||
|
package queries
|
||||||
|
|
||||||
|
// Code generated by github.com/Khan/genqlient, DO NOT EDIT.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/Khan/genqlient/graphql"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SimpleQueryResponse is returned by SimpleQuery on success.
|
||||||
|
type SimpleQueryResponse struct {
|
||||||
|
// user looks up a user by some stuff.
|
||||||
|
//
|
||||||
|
// See UserQueryInput for what stuff is supported.
|
||||||
|
// If query is null, returns the current user.
|
||||||
|
User SimpleQueryUser `json:"user"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SimpleQueryUser includes the requested fields of the GraphQL type User.
|
||||||
|
// The GraphQL type's documentation follows.
|
||||||
|
//
|
||||||
|
// A User is a user!
|
||||||
|
type SimpleQueryUser struct {
|
||||||
|
// id is the user's ID.
|
||||||
|
//
|
||||||
|
// It is stable, unique, and opaque, like all good IDs.
|
||||||
|
Id string `json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func SimpleQuery(
|
||||||
|
ctx context.Context,
|
||||||
|
client graphql.Client,
|
||||||
|
) (*SimpleQueryResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
var retval SimpleQueryResponse
|
||||||
|
err = client.MakeRequest(
|
||||||
|
ctx,
|
||||||
|
"SimpleQuery",
|
||||||
|
`
|
||||||
|
query SimpleQuery {
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
&retval,
|
||||||
|
nil,
|
||||||
|
)
|
||||||
|
return &retval, err
|
||||||
|
}
|
||||||
|
|
||||||
generate/testdata/snapshots/TestGenerateWithConfig-ExportOperations-testdata-queries-operations.json
Vendored
+9
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"operations": [
|
||||||
|
{
|
||||||
|
"operationName": "SimpleQuery",
|
||||||
|
"query": "\nquery SimpleQuery {\n\tuser {\n\t\tid\n\t}\n}\n",
|
||||||
|
"sourceLocation": "SimpleQuery.graphql"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+50
@@ -0,0 +1,50 @@
|
|||||||
|
package queries
|
||||||
|
|
||||||
|
// Code generated by github.com/Khan/genqlient, DO NOT EDIT.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/Khan/genqlient/graphql"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SimpleQueryResponse is returned by SimpleQuery on success.
|
||||||
|
type SimpleQueryResponse struct {
|
||||||
|
// user looks up a user by some stuff.
|
||||||
|
//
|
||||||
|
// See UserQueryInput for what stuff is supported.
|
||||||
|
// If query is null, returns the current user.
|
||||||
|
User SimpleQueryUser `json:"user"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SimpleQueryUser includes the requested fields of the GraphQL type User.
|
||||||
|
// The GraphQL type's documentation follows.
|
||||||
|
//
|
||||||
|
// A User is a user!
|
||||||
|
type SimpleQueryUser struct {
|
||||||
|
// id is the user's ID.
|
||||||
|
//
|
||||||
|
// It is stable, unique, and opaque, like all good IDs.
|
||||||
|
Id string `json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func SimpleQuery(
|
||||||
|
client graphql.Client,
|
||||||
|
) (*SimpleQueryResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
var retval SimpleQueryResponse
|
||||||
|
err = client.MakeRequest(
|
||||||
|
nil,
|
||||||
|
"SimpleQuery",
|
||||||
|
`
|
||||||
|
query SimpleQuery {
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
&retval,
|
||||||
|
nil,
|
||||||
|
)
|
||||||
|
return &retval, err
|
||||||
|
}
|
||||||
|
|
||||||
+53
@@ -0,0 +1,53 @@
|
|||||||
|
package mypkg
|
||||||
|
|
||||||
|
// Code generated by github.com/Khan/genqlient, DO NOT EDIT.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/Khan/genqlient/graphql"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SimpleQueryResponse is returned by SimpleQuery on success.
|
||||||
|
type SimpleQueryResponse struct {
|
||||||
|
// user looks up a user by some stuff.
|
||||||
|
//
|
||||||
|
// See UserQueryInput for what stuff is supported.
|
||||||
|
// If query is null, returns the current user.
|
||||||
|
User SimpleQueryUser `json:"user"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SimpleQueryUser includes the requested fields of the GraphQL type User.
|
||||||
|
// The GraphQL type's documentation follows.
|
||||||
|
//
|
||||||
|
// A User is a user!
|
||||||
|
type SimpleQueryUser struct {
|
||||||
|
// id is the user's ID.
|
||||||
|
//
|
||||||
|
// It is stable, unique, and opaque, like all good IDs.
|
||||||
|
Id string `json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func SimpleQuery(
|
||||||
|
ctx context.Context,
|
||||||
|
client graphql.Client,
|
||||||
|
) (*SimpleQueryResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
var retval SimpleQueryResponse
|
||||||
|
err = client.MakeRequest(
|
||||||
|
ctx,
|
||||||
|
"SimpleQuery",
|
||||||
|
`
|
||||||
|
query SimpleQuery {
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
&retval,
|
||||||
|
nil,
|
||||||
|
)
|
||||||
|
return &retval, err
|
||||||
|
}
|
||||||
|
|
||||||
Vendored
+53
@@ -0,0 +1,53 @@
|
|||||||
|
package mypkg
|
||||||
|
|
||||||
|
// Code generated by github.com/Khan/genqlient, DO NOT EDIT.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/Khan/genqlient/graphql"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SimpleQueryResponse is returned by SimpleQuery on success.
|
||||||
|
type SimpleQueryResponse struct {
|
||||||
|
// user looks up a user by some stuff.
|
||||||
|
//
|
||||||
|
// See UserQueryInput for what stuff is supported.
|
||||||
|
// If query is null, returns the current user.
|
||||||
|
User SimpleQueryUser `json:"user"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SimpleQueryUser includes the requested fields of the GraphQL type User.
|
||||||
|
// The GraphQL type's documentation follows.
|
||||||
|
//
|
||||||
|
// A User is a user!
|
||||||
|
type SimpleQueryUser struct {
|
||||||
|
// id is the user's ID.
|
||||||
|
//
|
||||||
|
// It is stable, unique, and opaque, like all good IDs.
|
||||||
|
Id string `json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func SimpleQuery(
|
||||||
|
ctx context.Context,
|
||||||
|
client graphql.Client,
|
||||||
|
) (*SimpleQueryResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
var retval SimpleQueryResponse
|
||||||
|
err = client.MakeRequest(
|
||||||
|
ctx,
|
||||||
|
"SimpleQuery",
|
||||||
|
`
|
||||||
|
query SimpleQuery {
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
&retval,
|
||||||
|
nil,
|
||||||
|
)
|
||||||
|
return &retval, err
|
||||||
|
}
|
||||||
|
|
||||||
generate/testdata/snapshots/TestGenerateWithConfig-SubpackageConfig-testdata-queries-mypkg-myfile.go
Vendored
+53
@@ -0,0 +1,53 @@
|
|||||||
|
package mypkg
|
||||||
|
|
||||||
|
// Code generated by github.com/Khan/genqlient, DO NOT EDIT.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/Khan/genqlient/graphql"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SimpleQueryResponse is returned by SimpleQuery on success.
|
||||||
|
type SimpleQueryResponse struct {
|
||||||
|
// user looks up a user by some stuff.
|
||||||
|
//
|
||||||
|
// See UserQueryInput for what stuff is supported.
|
||||||
|
// If query is null, returns the current user.
|
||||||
|
User SimpleQueryUser `json:"user"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SimpleQueryUser includes the requested fields of the GraphQL type User.
|
||||||
|
// The GraphQL type's documentation follows.
|
||||||
|
//
|
||||||
|
// A User is a user!
|
||||||
|
type SimpleQueryUser struct {
|
||||||
|
// id is the user's ID.
|
||||||
|
//
|
||||||
|
// It is stable, unique, and opaque, like all good IDs.
|
||||||
|
Id string `json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func SimpleQuery(
|
||||||
|
ctx context.Context,
|
||||||
|
client graphql.Client,
|
||||||
|
) (*SimpleQueryResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
var retval SimpleQueryResponse
|
||||||
|
err = client.MakeRequest(
|
||||||
|
ctx,
|
||||||
|
"SimpleQuery",
|
||||||
|
`
|
||||||
|
query SimpleQuery {
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
&retval,
|
||||||
|
nil,
|
||||||
|
)
|
||||||
|
return &retval, err
|
||||||
|
}
|
||||||
|
|
||||||
@@ -675,8 +675,10 @@ func simpleQuery(
|
|||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
client graphql.Client,
|
client graphql.Client,
|
||||||
) (*simpleQueryResponse, error) {
|
) (*simpleQueryResponse, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval simpleQueryResponse
|
var retval simpleQueryResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
ctx,
|
ctx,
|
||||||
"simpleQuery",
|
"simpleQuery",
|
||||||
`
|
`
|
||||||
@@ -703,8 +705,10 @@ func queryWithVariables(
|
|||||||
"id": id,
|
"id": id,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval queryWithVariablesResponse
|
var retval queryWithVariablesResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
ctx,
|
ctx,
|
||||||
"queryWithVariables",
|
"queryWithVariables",
|
||||||
`
|
`
|
||||||
@@ -731,8 +735,10 @@ func queryWithInterfaceNoFragments(
|
|||||||
"id": id,
|
"id": id,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval queryWithInterfaceNoFragmentsResponse
|
var retval queryWithInterfaceNoFragmentsResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
ctx,
|
ctx,
|
||||||
"queryWithInterfaceNoFragments",
|
"queryWithInterfaceNoFragments",
|
||||||
`
|
`
|
||||||
@@ -763,8 +769,10 @@ func queryWithInterfaceListField(
|
|||||||
"ids": ids,
|
"ids": ids,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval queryWithInterfaceListFieldResponse
|
var retval queryWithInterfaceListFieldResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
ctx,
|
ctx,
|
||||||
"queryWithInterfaceListField",
|
"queryWithInterfaceListField",
|
||||||
`
|
`
|
||||||
@@ -791,8 +799,10 @@ func queryWithInterfaceListPointerField(
|
|||||||
"ids": ids,
|
"ids": ids,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval queryWithInterfaceListPointerFieldResponse
|
var retval queryWithInterfaceListPointerFieldResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
ctx,
|
ctx,
|
||||||
"queryWithInterfaceListPointerField",
|
"queryWithInterfaceListPointerField",
|
||||||
`
|
`
|
||||||
@@ -819,8 +829,10 @@ func queryWithFragments(
|
|||||||
"ids": ids,
|
"ids": ids,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
var retval queryWithFragmentsResponse
|
var retval queryWithFragmentsResponse
|
||||||
err := client.MakeRequest(
|
err = client.MakeRequest(
|
||||||
ctx,
|
ctx,
|
||||||
"queryWithFragments",
|
"queryWithFragments",
|
||||||
`
|
`
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
package testutil
|
package testutil
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/Khan/genqlient/graphql"
|
||||||
|
)
|
||||||
|
|
||||||
type ID string
|
type ID string
|
||||||
|
|
||||||
type Pokemon struct {
|
type Pokemon struct {
|
||||||
@@ -10,3 +16,13 @@ type Pokemon struct {
|
|||||||
func (p Pokemon) Battle(q Pokemon) bool {
|
func (p Pokemon) Battle(q Pokemon) bool {
|
||||||
return p.Level > q.Level
|
return p.Level > q.Level
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type MyContext interface {
|
||||||
|
context.Context
|
||||||
|
|
||||||
|
MyMethod()
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetClientFromNowhere() (graphql.Client, error) { return nil, nil }
|
||||||
|
func GetClientFromContext(ctx context.Context) (graphql.Client, error) { return nil, nil }
|
||||||
|
func GetClientFromMyContext(ctx MyContext) (graphql.Client, error) { return nil, nil }
|
||||||
|
|||||||
Reference in New Issue
Block a user