///|
/// Field arguments and their defaults. `greet(name: String = "lfanke")` echoes its
/// argument through `ResolveInfo::arg`, so omitting it applies the default,
/// supplying it overrides, and an explicit `null` counts as a value — the default
/// applies only to an omitted argument, not a null one.
///
/// moon run src/examples/02-arguments
#coverage.skip
fn main {
let s = @moongql.Schema::new()
let q = s.object("Query")
q.field_args(
"greet",
[("name", Scalar("String"))],
NonNull(Scalar("String")),
defaults=[("name", Json("lfanke"))],
)
let r = @moongql.Resolvers::new()
r.field("Query", "greet", fn(info) {
let who = match info.arg("name") {
String(n) => n
Null => "nobody"
_ => "?"
}
Json("qwq, " + who)
})
println(@moongql.execute(s, r, "{ greet }").stringify())
println(@moongql.execute(s, r, "{ greet(name: \"heke1228\") }").stringify())
println(@moongql.execute(s, r, "{ greet(name: null) }").stringify())
}