///|
/// Operation variables and field aliases. `$uid` is bound from a variables map and
/// fed into an argument; the `hero:` alias renames the field in the response. The
/// second run omits `$uid` so its declared default fills in.
///
/// moon run src/examples/03-variables
#coverage.skip
fn main {
let s = @moongql.Schema::new()
let q = s.object("Query")
q.field_args("user", [("id", NonNull(Scalar("ID")))], Named("User"))
let u = s.object("User")
u.field("id", NonNull(Scalar("ID")))
u.field("name", NonNull(Scalar("String")))
let r = @moongql.Resolvers::new()
r.field("Query", "user", fn(info) {
match info.arg("id") {
String("1") => { "id": "1", "name": "emm" }
String("2") => { "id": "2", "name": "hhh" }
_ => Json::null()
}
})
let vars : Map[String, Json] = { "uid": "1" }
println(
@moongql.execute(
s,
r,
"query ($uid: ID!) { hero: user(id: $uid) { id name } }",
variables=vars,
).stringify(),
)
println(
@moongql.execute(
s, r, "query ($uid: ID! = \"2\") { user(id: $uid) { name } }",
).stringify(),
)
}