shurcooL/graphql

Allow building mutations from maps instead of structs

grihabor opened this issue · 0 comments

Suppose I can create user like this

mutation($login: String!) {
	createUser(login: $login) { login }
}
variables {
	"login": "grihabor"
}

Now I'd like to create multiple users in single request

mutation($login1: String!, $login2: String!, $login3: String!) {
	createUser(login: $login1) { login }
	createUser(login: $login2) { login }
	createUser(login: $login3) { login }
}
variables {
	"login1": "grihabor",
        "login2": "diman",
        "login3": "indigo",
}

It would be convenient to implement it in code with ordered map

type CreateUser struct {
	Login graphql.String
}
m := [][2]interface{}{
	{"createUser(login: $login1)", &CreateUser{}},
	{"createUser(login: $login2)", &CreateUser{}},
	{"createUser(login: $login3)", &CreateUser{}},
}
variables := map[string]interface{}{
	"login1": "grihabor",
	"login2": "diman",
	"login3": "indigo",
}
_ = client.Mutate(context.Background(), &m, variables)

jfyi I've started implementing the thing