diff --git a/example/generated.go b/example/generated.go index 1533d13..1e45927 100644 --- a/example/generated.go +++ b/example/generated.go @@ -31,6 +31,7 @@ func getViewer( var retval getViewerResponse err := client.MakeRequest( ctx, + "getViewer", ` query getViewer { viewer { @@ -57,6 +58,7 @@ func getUser( var retval getUserResponse err := client.MakeRequest( ctx, + "getUser", ` query getUser ($Login: String!) { user(login: $Login) { diff --git a/generate/operation.go.tmpl b/generate/operation.go.tmpl index cfa5148..b332b4c 100644 --- a/generate/operation.go.tmpl +++ b/generate/operation.go.tmpl @@ -40,6 +40,7 @@ func {{.Name}}( var retval {{.ResponseName}} err := {{if $.Config.ClientGetter}}{{$.Config.ClientGetter}}{{else}}client{{end}}.MakeRequest( {{if $.Config.ContextType}}ctx{{else}}nil{{end}}, + "{{.Name}}", `{{.Body}}`, &retval, {{if .Args}}variables{{else}}nil{{end}}, diff --git a/generate/testdata/InputObject.graphql.go b/generate/testdata/InputObject.graphql.go index 284fc90..3b37e44 100644 --- a/generate/testdata/InputObject.graphql.go +++ b/generate/testdata/InputObject.graphql.go @@ -40,6 +40,7 @@ func InputObjectQuery( var retval InputObjectQueryResponse err := client.MakeRequest( nil, + "InputObjectQuery", ` query InputObjectQuery ($query: UserQueryInput) { user(query: $query) { diff --git a/generate/testdata/InterfaceNoFragments.graphql.go b/generate/testdata/InterfaceNoFragments.graphql.go index 422f348..7250611 100644 --- a/generate/testdata/InterfaceNoFragments.graphql.go +++ b/generate/testdata/InterfaceNoFragments.graphql.go @@ -99,6 +99,7 @@ func InterfaceNoFragmentsQuery( var retval InterfaceNoFragmentsQueryResponse err := client.MakeRequest( nil, + "InterfaceNoFragmentsQuery", ` query InterfaceNoFragmentsQuery { root { diff --git a/generate/testdata/ListInput.graphql.go b/generate/testdata/ListInput.graphql.go index ff01793..94d7164 100644 --- a/generate/testdata/ListInput.graphql.go +++ b/generate/testdata/ListInput.graphql.go @@ -25,6 +25,7 @@ func ListInputQuery( var retval ListInputQueryResponse err := client.MakeRequest( nil, + "ListInputQuery", ` query ListInputQuery ($names: [String]) { user(query: {names:$names}) { diff --git a/generate/testdata/QueryWithAlias.graphql.go b/generate/testdata/QueryWithAlias.graphql.go index 5fca827..57bef7a 100644 --- a/generate/testdata/QueryWithAlias.graphql.go +++ b/generate/testdata/QueryWithAlias.graphql.go @@ -20,6 +20,7 @@ func QueryWithAlias( var retval QueryWithAliasResponse err := client.MakeRequest( nil, + "QueryWithAlias", ` query QueryWithAlias { User: user { diff --git a/generate/testdata/QueryWithDoubleAlias.graphql.go b/generate/testdata/QueryWithDoubleAlias.graphql.go index 1c1b9a7..448c7b2 100644 --- a/generate/testdata/QueryWithDoubleAlias.graphql.go +++ b/generate/testdata/QueryWithDoubleAlias.graphql.go @@ -21,6 +21,7 @@ func QueryWithDoubleAlias( var retval QueryWithDoubleAliasResponse err := client.MakeRequest( nil, + "QueryWithDoubleAlias", ` query QueryWithDoubleAlias { user { diff --git a/generate/testdata/QueryWithEnums.graphql.go b/generate/testdata/QueryWithEnums.graphql.go index 7ef0f68..c943844 100644 --- a/generate/testdata/QueryWithEnums.graphql.go +++ b/generate/testdata/QueryWithEnums.graphql.go @@ -27,6 +27,7 @@ func QueryWithEnums( var retval QueryWithEnumsResponse err := client.MakeRequest( nil, + "QueryWithEnums", ` query QueryWithEnums { user { diff --git a/generate/testdata/QueryWithSlices.graphql.go b/generate/testdata/QueryWithSlices.graphql.go index b9091bc..4dc684c 100644 --- a/generate/testdata/QueryWithSlices.graphql.go +++ b/generate/testdata/QueryWithSlices.graphql.go @@ -23,6 +23,7 @@ func QueryWithSlices( var retval QueryWithSlicesResponse err := client.MakeRequest( nil, + "QueryWithSlices", ` query QueryWithSlices { user { diff --git a/generate/testdata/QueryWithStructs.graphql.go b/generate/testdata/QueryWithStructs.graphql.go index 9a9559a..bcdef77 100644 --- a/generate/testdata/QueryWithStructs.graphql.go +++ b/generate/testdata/QueryWithStructs.graphql.go @@ -25,6 +25,7 @@ func QueryWithStructs( var retval QueryWithStructsResponse err := client.MakeRequest( nil, + "QueryWithStructs", ` query QueryWithStructs { user { diff --git a/generate/testdata/SimpleInput.graphql.go b/generate/testdata/SimpleInput.graphql.go index 2127493..441e498 100644 --- a/generate/testdata/SimpleInput.graphql.go +++ b/generate/testdata/SimpleInput.graphql.go @@ -25,6 +25,7 @@ func SimpleInputQuery( var retval SimpleInputQueryResponse err := client.MakeRequest( nil, + "SimpleInputQuery", ` query SimpleInputQuery ($name: String!) { user(query: {name:$name}) { diff --git a/generate/testdata/SimpleQuery.graphql.go b/generate/testdata/SimpleQuery.graphql.go index ab1e804..49382e9 100644 --- a/generate/testdata/SimpleQuery.graphql.go +++ b/generate/testdata/SimpleQuery.graphql.go @@ -20,6 +20,7 @@ func SimpleQuery( var retval SimpleQueryResponse err := client.MakeRequest( nil, + "SimpleQuery", ` query SimpleQuery { user { diff --git a/generate/testdata/TypeName.graphql.go b/generate/testdata/TypeName.graphql.go index d2bf790..4a07f0d 100644 --- a/generate/testdata/TypeName.graphql.go +++ b/generate/testdata/TypeName.graphql.go @@ -21,6 +21,7 @@ func TypeNameQuery( var retval TypeNameQueryResponse err := client.MakeRequest( nil, + "TypeNameQuery", ` query TypeNameQuery { user { diff --git a/generate/testdata/UnionNoFragments.graphql.go b/generate/testdata/UnionNoFragments.graphql.go index fe64fb3..e47fd38 100644 --- a/generate/testdata/UnionNoFragments.graphql.go +++ b/generate/testdata/UnionNoFragments.graphql.go @@ -77,6 +77,7 @@ func UnionNoFragmentsQuery( var retval UnionNoFragmentsQueryResponse err := client.MakeRequest( nil, + "UnionNoFragmentsQuery", ` query UnionNoFragmentsQuery { randomLeaf { diff --git a/generate/testdata/UsesEnumTwice.graphql.go b/generate/testdata/UsesEnumTwice.graphql.go index 84e099b..97ee3c7 100644 --- a/generate/testdata/UsesEnumTwice.graphql.go +++ b/generate/testdata/UsesEnumTwice.graphql.go @@ -39,6 +39,7 @@ func UsesEnumTwiceQuery( var retval UsesEnumTwiceQueryResponse err := client.MakeRequest( nil, + "UsesEnumTwiceQuery", ` query UsesEnumTwiceQuery { Me: user { diff --git a/generate/testdata/unexported.graphql.go b/generate/testdata/unexported.graphql.go index a9fb34e..a88dd63 100644 --- a/generate/testdata/unexported.graphql.go +++ b/generate/testdata/unexported.graphql.go @@ -40,6 +40,7 @@ func unexported( var retval unexportedResponse err := client.MakeRequest( nil, + "unexported", ` query unexported ($query: UserQueryInput) { user(query: $query) { diff --git a/graphql/client.go b/graphql/client.go index a8cdd3a..707a320 100644 --- a/graphql/client.go +++ b/graphql/client.go @@ -40,6 +40,7 @@ type Client interface { // (Errors are returned.) But again, MakeRequest may customize this. MakeRequest( ctx context.Context, + opName string, query string, retval interface{}, variables map[string]interface{}, @@ -68,10 +69,12 @@ func NewClient(endpoint string, httpClient *http.Client) Client { return &client{endpoint, http.MethodPost, httpClient} } -// TODO: set OperationName? type payload struct { Query string `json:"query"` Variables map[string]interface{} `json:"variables"` + // OpName is only required if there are multiple queries in the document, + // but we set it unconditionally, because that's easier. + OpName string `json:"operationName"` } type response struct { @@ -79,10 +82,11 @@ type response struct { Errors gqlerror.List `json:"errors"` } -func (c *client) MakeRequest(ctx context.Context, query string, retval interface{}, variables map[string]interface{}) error { +func (c *client) MakeRequest(ctx context.Context, opName string, query string, retval interface{}, variables map[string]interface{}) error { body, err := json.Marshal(payload{ Query: query, Variables: variables, + OpName: opName, }) if err != nil { return err