#[InputObject]
Define a GraphQL input object
Attribute | description | Type | Optional |
name | Object name | string | Y |
desc | Object description | string | Y |
Attribute | description | Type | Optional |
name | Field name | string | Y |
desc | Field description | string | Y |
default | Field default value | string | Y |
validator | Input value validator | InputValueValidator | Y |
use async_graphql::*;
#[InputObject]
struct MyInputObject {
a: i32,
#[field(default = "10")]
b: i32,
}
struct QueryRoot;
#[Object]
impl QueryRoot {
#[field(desc = "value")]
async fn value(&self, input: MyInputObject) -> i32 {
input.a * input.b
}
}
#[async_std::main]
async fn main() {
let schema = Schema::new(QueryRoot, EmptyMutation, EmptySubscription);
let res = schema.query(r#"
{
value1: value(input:{a:9, b:3})
value2: value(input:{a:9})
}"#).execute().await.unwrap().data;
assert_eq!(res, serde_json::json!({ "value1": 27, "value2": 90 }));
}