more wiring for configurable context/client, theoretically should be good enough for khan use
This commit is contained in:
@@ -75,7 +75,7 @@ Generated code:
|
||||
|
||||
Config options:
|
||||
- (+) proper config/arguments setup (e.g. with [viper](https://github.com/spf13/viper))
|
||||
- (+) fix up context/client wiring (see DESIGN)
|
||||
- make client/context wiring a bit more documented and usable by humans (and allow imports for the client-getter)
|
||||
- get schema via HTTP (perhaps even via GraphQL introspection)
|
||||
- send hash rather than full query
|
||||
- whether names should be exported
|
||||
|
||||
+23
-6
@@ -24,31 +24,48 @@ type getViewerViewerUser struct {
|
||||
MyName string
|
||||
}
|
||||
|
||||
func getViewer(ctx context.Context, client *graphql.Client) (*getViewerResponse, error) {
|
||||
func getViewer(
|
||||
ctx context.Context,
|
||||
client *graphql.Client,
|
||||
) (*getViewerResponse, error) {
|
||||
var retval getViewerResponse
|
||||
err := client.MakeRequest(ctx, `
|
||||
err := client.MakeRequest(
|
||||
ctx,
|
||||
`
|
||||
query getViewer {
|
||||
viewer {
|
||||
MyName: name
|
||||
}
|
||||
}
|
||||
`, &retval, nil)
|
||||
`,
|
||||
&retval,
|
||||
nil,
|
||||
)
|
||||
return &retval, err
|
||||
}
|
||||
|
||||
// getUser gets the given user's name from their username.
|
||||
func getUser(ctx context.Context, client *graphql.Client, login string) (*getUserResponse, error) {
|
||||
func getUser(
|
||||
ctx context.Context,
|
||||
client *graphql.Client,
|
||||
login string,
|
||||
) (*getUserResponse, error) {
|
||||
variables := map[string]interface{}{
|
||||
"Login": login,
|
||||
}
|
||||
|
||||
var retval getUserResponse
|
||||
err := client.MakeRequest(ctx, `
|
||||
err := client.MakeRequest(
|
||||
ctx,
|
||||
`
|
||||
query getUser ($Login: String!) {
|
||||
user(login: $Login) {
|
||||
theirName: name
|
||||
}
|
||||
}
|
||||
`, &retval, variables)
|
||||
`,
|
||||
&retval,
|
||||
variables,
|
||||
)
|
||||
return &retval, err
|
||||
}
|
||||
|
||||
+1
-2
@@ -35,7 +35,6 @@ type Config struct {
|
||||
// accept and use as the context.Context for HTTP requests. Defaults to
|
||||
// context.Context; set to the empty string to omit context entirely.
|
||||
ContextType string `yaml:"context_type"`
|
||||
// TODO: implement client-getters
|
||||
// If set, a snippet of Go code to get a *graphql.Client from the context
|
||||
// (which will be named ctx). For example, this might do
|
||||
// ctx.Value(myKey).(*graphql.Client). If omitted, client must be
|
||||
@@ -43,7 +42,7 @@ type Config struct {
|
||||
// TODO: what if you want to do an import in this snippet, e.g. for a
|
||||
// getter function, global var, or a context-key-type?
|
||||
// TODO: what if you want to return err?
|
||||
// ClientGetter string `yaml:"client_getter"`
|
||||
ClientGetter string `yaml:"client_getter"`
|
||||
}
|
||||
|
||||
func (c *Config) ValidateAndFillDefaults() error {
|
||||
|
||||
@@ -19,7 +19,17 @@ import (
|
||||
|
||||
{{range .Operations}}
|
||||
{{.Doc}}
|
||||
func {{.Name}}({{if $.Config.ContextType}}ctx {{$.Config.ContextType}}, {{end}}client *graphql.Client{{range .Args}}, {{.GoName}} {{.GoType}}{{end}}) (*{{.ResponseName}}, error) {
|
||||
func {{.Name}}(
|
||||
{{if $.Config.ContextType -}}
|
||||
ctx {{$.Config.ContextType}},
|
||||
{{end}}
|
||||
{{- if not $.Config.ClientGetter -}}
|
||||
client *graphql.Client,
|
||||
{{end}}
|
||||
{{- range .Args -}}
|
||||
{{.GoName}} {{.GoType}},
|
||||
{{end -}}
|
||||
) (*{{.ResponseName}}, error) {
|
||||
{{- if .Args -}}
|
||||
variables := map[string]interface{}{
|
||||
{{range .Args -}}
|
||||
@@ -28,7 +38,12 @@ func {{.Name}}({{if $.Config.ContextType}}ctx {{$.Config.ContextType}}, {{end}}c
|
||||
}
|
||||
{{end}}
|
||||
var retval {{.ResponseName}}
|
||||
err := client.MakeRequest({{if $.Config.ContextType}}ctx{{else}}nil{{end}}, `{{.Body}}`, &retval, {{if .Args}}variables{{else}}nil{{end}})
|
||||
err := {{if $.Config.ClientGetter}}{{$.Config.ClientGetter}}{{else}}client{{end}}.MakeRequest(
|
||||
{{if $.Config.ContextType}}ctx{{else}}nil{{end}},
|
||||
`{{.Body}}`,
|
||||
&retval,
|
||||
{{if .Args}}variables{{else}}nil{{end}},
|
||||
)
|
||||
return &retval, err
|
||||
}
|
||||
{{end}}
|
||||
|
||||
+11
-3
@@ -29,18 +29,26 @@ const (
|
||||
UserQueryInputRoleTeacher UserQueryInputRole = "TEACHER"
|
||||
)
|
||||
|
||||
func InputObjectQuery(client *graphql.Client, query UserQueryInput) (*InputObjectQueryResponse, error) {
|
||||
func InputObjectQuery(
|
||||
client *graphql.Client,
|
||||
query UserQueryInput,
|
||||
) (*InputObjectQueryResponse, error) {
|
||||
variables := map[string]interface{}{
|
||||
"query": query,
|
||||
}
|
||||
|
||||
var retval InputObjectQueryResponse
|
||||
err := client.MakeRequest(nil, `
|
||||
err := client.MakeRequest(
|
||||
nil,
|
||||
`
|
||||
query InputObjectQuery ($query: UserQueryInput) {
|
||||
user(query: $query) {
|
||||
id
|
||||
}
|
||||
}
|
||||
`, &retval, variables)
|
||||
`,
|
||||
&retval,
|
||||
variables,
|
||||
)
|
||||
return &retval, err
|
||||
}
|
||||
|
||||
+10
-3
@@ -93,9 +93,13 @@ type InterfaceNoFragmentsQueryRootTopicChildrenVideo struct {
|
||||
func (v InterfaceNoFragmentsQueryRootTopicChildrenVideo) implementsGraphQLInterfaceInterfaceNoFragmentsQueryRootTopicChildrenContent() {
|
||||
}
|
||||
|
||||
func InterfaceNoFragmentsQuery(client *graphql.Client) (*InterfaceNoFragmentsQueryResponse, error) {
|
||||
func InterfaceNoFragmentsQuery(
|
||||
client *graphql.Client,
|
||||
) (*InterfaceNoFragmentsQueryResponse, error) {
|
||||
var retval InterfaceNoFragmentsQueryResponse
|
||||
err := client.MakeRequest(nil, `
|
||||
err := client.MakeRequest(
|
||||
nil,
|
||||
`
|
||||
query InterfaceNoFragmentsQuery {
|
||||
root {
|
||||
id
|
||||
@@ -106,6 +110,9 @@ query InterfaceNoFragmentsQuery {
|
||||
}
|
||||
}
|
||||
}
|
||||
`, &retval, nil)
|
||||
`,
|
||||
&retval,
|
||||
nil,
|
||||
)
|
||||
return &retval, err
|
||||
}
|
||||
|
||||
+11
-3
@@ -14,18 +14,26 @@ type ListInputQueryUser struct {
|
||||
Id string `json:"id"`
|
||||
}
|
||||
|
||||
func ListInputQuery(client *graphql.Client, names []string) (*ListInputQueryResponse, error) {
|
||||
func ListInputQuery(
|
||||
client *graphql.Client,
|
||||
names []string,
|
||||
) (*ListInputQueryResponse, error) {
|
||||
variables := map[string]interface{}{
|
||||
"names": names,
|
||||
}
|
||||
|
||||
var retval ListInputQueryResponse
|
||||
err := client.MakeRequest(nil, `
|
||||
err := client.MakeRequest(
|
||||
nil,
|
||||
`
|
||||
query ListInputQuery ($names: [String]) {
|
||||
user(query: {names:$names}) {
|
||||
id
|
||||
}
|
||||
}
|
||||
`, &retval, variables)
|
||||
`,
|
||||
&retval,
|
||||
variables,
|
||||
)
|
||||
return &retval, err
|
||||
}
|
||||
|
||||
+10
-3
@@ -14,14 +14,21 @@ type QueryWithAliasUser struct {
|
||||
ID string
|
||||
}
|
||||
|
||||
func QueryWithAlias(client *graphql.Client) (*QueryWithAliasResponse, error) {
|
||||
func QueryWithAlias(
|
||||
client *graphql.Client,
|
||||
) (*QueryWithAliasResponse, error) {
|
||||
var retval QueryWithAliasResponse
|
||||
err := client.MakeRequest(nil, `
|
||||
err := client.MakeRequest(
|
||||
nil,
|
||||
`
|
||||
query QueryWithAlias {
|
||||
User: user {
|
||||
ID: id
|
||||
}
|
||||
}
|
||||
`, &retval, nil)
|
||||
`,
|
||||
&retval,
|
||||
nil,
|
||||
)
|
||||
return &retval, err
|
||||
}
|
||||
|
||||
+10
-3
@@ -15,15 +15,22 @@ type QueryWithDoubleAliasUser struct {
|
||||
AlsoID string
|
||||
}
|
||||
|
||||
func QueryWithDoubleAlias(client *graphql.Client) (*QueryWithDoubleAliasResponse, error) {
|
||||
func QueryWithDoubleAlias(
|
||||
client *graphql.Client,
|
||||
) (*QueryWithDoubleAliasResponse, error) {
|
||||
var retval QueryWithDoubleAliasResponse
|
||||
err := client.MakeRequest(nil, `
|
||||
err := client.MakeRequest(
|
||||
nil,
|
||||
`
|
||||
query QueryWithDoubleAlias {
|
||||
user {
|
||||
ID: id
|
||||
AlsoID: id
|
||||
}
|
||||
}
|
||||
`, &retval, nil)
|
||||
`,
|
||||
&retval,
|
||||
nil,
|
||||
)
|
||||
return &retval, err
|
||||
}
|
||||
|
||||
+10
-3
@@ -21,14 +21,21 @@ const (
|
||||
QueryWithEnumsUserRolesRoleTeacher QueryWithEnumsUserRolesRole = "TEACHER"
|
||||
)
|
||||
|
||||
func QueryWithEnums(client *graphql.Client) (*QueryWithEnumsResponse, error) {
|
||||
func QueryWithEnums(
|
||||
client *graphql.Client,
|
||||
) (*QueryWithEnumsResponse, error) {
|
||||
var retval QueryWithEnumsResponse
|
||||
err := client.MakeRequest(nil, `
|
||||
err := client.MakeRequest(
|
||||
nil,
|
||||
`
|
||||
query QueryWithEnums {
|
||||
user {
|
||||
roles
|
||||
}
|
||||
}
|
||||
`, &retval, nil)
|
||||
`,
|
||||
&retval,
|
||||
nil,
|
||||
)
|
||||
return &retval, err
|
||||
}
|
||||
|
||||
+10
-3
@@ -17,9 +17,13 @@ type QueryWithSlicesUser struct {
|
||||
EmailsWithNullsOrNull []string `json:"emailsWithNullsOrNull"`
|
||||
}
|
||||
|
||||
func QueryWithSlices(client *graphql.Client) (*QueryWithSlicesResponse, error) {
|
||||
func QueryWithSlices(
|
||||
client *graphql.Client,
|
||||
) (*QueryWithSlicesResponse, error) {
|
||||
var retval QueryWithSlicesResponse
|
||||
err := client.MakeRequest(nil, `
|
||||
err := client.MakeRequest(
|
||||
nil,
|
||||
`
|
||||
query QueryWithSlices {
|
||||
user {
|
||||
emails
|
||||
@@ -28,6 +32,9 @@ query QueryWithSlices {
|
||||
emailsWithNullsOrNull
|
||||
}
|
||||
}
|
||||
`, &retval, nil)
|
||||
`,
|
||||
&retval,
|
||||
nil,
|
||||
)
|
||||
return &retval, err
|
||||
}
|
||||
|
||||
+10
-3
@@ -19,9 +19,13 @@ type QueryWithStructsUserAuthMethodsAuthMethod struct {
|
||||
Email string `json:"email"`
|
||||
}
|
||||
|
||||
func QueryWithStructs(client *graphql.Client) (*QueryWithStructsResponse, error) {
|
||||
func QueryWithStructs(
|
||||
client *graphql.Client,
|
||||
) (*QueryWithStructsResponse, error) {
|
||||
var retval QueryWithStructsResponse
|
||||
err := client.MakeRequest(nil, `
|
||||
err := client.MakeRequest(
|
||||
nil,
|
||||
`
|
||||
query QueryWithStructs {
|
||||
user {
|
||||
authMethods {
|
||||
@@ -30,6 +34,9 @@ query QueryWithStructs {
|
||||
}
|
||||
}
|
||||
}
|
||||
`, &retval, nil)
|
||||
`,
|
||||
&retval,
|
||||
nil,
|
||||
)
|
||||
return &retval, err
|
||||
}
|
||||
|
||||
+11
-3
@@ -14,18 +14,26 @@ type SimpleInputQueryUser struct {
|
||||
Id string `json:"id"`
|
||||
}
|
||||
|
||||
func SimpleInputQuery(client *graphql.Client, name string) (*SimpleInputQueryResponse, error) {
|
||||
func SimpleInputQuery(
|
||||
client *graphql.Client,
|
||||
name string,
|
||||
) (*SimpleInputQueryResponse, error) {
|
||||
variables := map[string]interface{}{
|
||||
"name": name,
|
||||
}
|
||||
|
||||
var retval SimpleInputQueryResponse
|
||||
err := client.MakeRequest(nil, `
|
||||
err := client.MakeRequest(
|
||||
nil,
|
||||
`
|
||||
query SimpleInputQuery ($name: String!) {
|
||||
user(query: {name:$name}) {
|
||||
id
|
||||
}
|
||||
}
|
||||
`, &retval, variables)
|
||||
`,
|
||||
&retval,
|
||||
variables,
|
||||
)
|
||||
return &retval, err
|
||||
}
|
||||
|
||||
+10
-3
@@ -14,14 +14,21 @@ type SimpleQueryUser struct {
|
||||
Id string `json:"id"`
|
||||
}
|
||||
|
||||
func SimpleQuery(client *graphql.Client) (*SimpleQueryResponse, error) {
|
||||
func SimpleQuery(
|
||||
client *graphql.Client,
|
||||
) (*SimpleQueryResponse, error) {
|
||||
var retval SimpleQueryResponse
|
||||
err := client.MakeRequest(nil, `
|
||||
err := client.MakeRequest(
|
||||
nil,
|
||||
`
|
||||
query SimpleQuery {
|
||||
user {
|
||||
id
|
||||
}
|
||||
}
|
||||
`, &retval, nil)
|
||||
`,
|
||||
&retval,
|
||||
nil,
|
||||
)
|
||||
return &retval, err
|
||||
}
|
||||
|
||||
+10
-3
@@ -15,15 +15,22 @@ type TypeNameQueryUser struct {
|
||||
Id string `json:"id"`
|
||||
}
|
||||
|
||||
func TypeNameQuery(client *graphql.Client) (*TypeNameQueryResponse, error) {
|
||||
func TypeNameQuery(
|
||||
client *graphql.Client,
|
||||
) (*TypeNameQueryResponse, error) {
|
||||
var retval TypeNameQueryResponse
|
||||
err := client.MakeRequest(nil, `
|
||||
err := client.MakeRequest(
|
||||
nil,
|
||||
`
|
||||
query TypeNameQuery {
|
||||
user {
|
||||
__typename
|
||||
id
|
||||
}
|
||||
}
|
||||
`, &retval, nil)
|
||||
`,
|
||||
&retval,
|
||||
nil,
|
||||
)
|
||||
return &retval, err
|
||||
}
|
||||
|
||||
+10
-3
@@ -71,14 +71,21 @@ func (v *UnionNoFragmentsQueryResponse) UnmarshalJSON(b []byte) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func UnionNoFragmentsQuery(client *graphql.Client) (*UnionNoFragmentsQueryResponse, error) {
|
||||
func UnionNoFragmentsQuery(
|
||||
client *graphql.Client,
|
||||
) (*UnionNoFragmentsQueryResponse, error) {
|
||||
var retval UnionNoFragmentsQueryResponse
|
||||
err := client.MakeRequest(nil, `
|
||||
err := client.MakeRequest(
|
||||
nil,
|
||||
`
|
||||
query UnionNoFragmentsQuery {
|
||||
randomLeaf {
|
||||
__typename
|
||||
}
|
||||
}
|
||||
`, &retval, nil)
|
||||
`,
|
||||
&retval,
|
||||
nil,
|
||||
)
|
||||
return &retval, err
|
||||
}
|
||||
|
||||
+10
-3
@@ -33,9 +33,13 @@ type UsesEnumTwiceQueryResponse struct {
|
||||
OtherUser UsesEnumTwiceQueryOtherUser
|
||||
}
|
||||
|
||||
func UsesEnumTwiceQuery(client *graphql.Client) (*UsesEnumTwiceQueryResponse, error) {
|
||||
func UsesEnumTwiceQuery(
|
||||
client *graphql.Client,
|
||||
) (*UsesEnumTwiceQueryResponse, error) {
|
||||
var retval UsesEnumTwiceQueryResponse
|
||||
err := client.MakeRequest(nil, `
|
||||
err := client.MakeRequest(
|
||||
nil,
|
||||
`
|
||||
query UsesEnumTwiceQuery {
|
||||
Me: user {
|
||||
roles
|
||||
@@ -44,6 +48,9 @@ query UsesEnumTwiceQuery {
|
||||
roles
|
||||
}
|
||||
}
|
||||
`, &retval, nil)
|
||||
`,
|
||||
&retval,
|
||||
nil,
|
||||
)
|
||||
return &retval, err
|
||||
}
|
||||
|
||||
+11
-3
@@ -29,18 +29,26 @@ const (
|
||||
userQueryInputRoleTeacher userQueryInputRole = "TEACHER"
|
||||
)
|
||||
|
||||
func unexported(client *graphql.Client, query userQueryInput) (*unexportedResponse, error) {
|
||||
func unexported(
|
||||
client *graphql.Client,
|
||||
query userQueryInput,
|
||||
) (*unexportedResponse, error) {
|
||||
variables := map[string]interface{}{
|
||||
"query": query,
|
||||
}
|
||||
|
||||
var retval unexportedResponse
|
||||
err := client.MakeRequest(nil, `
|
||||
err := client.MakeRequest(
|
||||
nil,
|
||||
`
|
||||
query unexported ($query: UserQueryInput) {
|
||||
user(query: $query) {
|
||||
id
|
||||
}
|
||||
}
|
||||
`, &retval, variables)
|
||||
`,
|
||||
&retval,
|
||||
variables,
|
||||
)
|
||||
return &retval, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user