[][src]Derive Macro async_graphql::InputObject

#[derive(InputObject)]
{
    // Attributes available to this derive:
    #[graphql]
}

Define a GraphQL input object

See also the Book.

Macro parameters

AttributedescriptionTypeOptional
nameObject namestringY
rename_fieldsRename all the fields according to the given case convention. The possible values are "lowercase", "UPPERCASE", "PascalCase", "camelCase", "snake_case", "SCREAMING_SNAKE_CASE".stringY

Field parameters

AttributedescriptionTypeOptional
nameField namestringY
defaultUse Default::default for default valuenoneY
defaultArgument default valueliteralY
default_withExpression to generate default valuecode stringY
validatorInput value validatorInputValueValidatorY
flattenSimilar to serde (flatten)booleanY

Examples

use async_graphql::*;

#[derive(InputObject)]
struct MyInputObject {
    a: i32,
    #[graphql(default = 10)]
    b: i32,
}

struct QueryRoot;

#[Object]
impl QueryRoot {
    /// value
    async fn value(&self, input: MyInputObject) -> i32 {
        input.a * input.b
    }
}

async_std::task::block_on(async move {
    let schema = Schema::new(QueryRoot, EmptyMutation, EmptySubscription);
    let res = schema.execute(r#"
    {
        value1: value(input:{a:9, b:3})
        value2: value(input:{a:9})
    }"#).await.into_result().unwrap().data;
    assert_eq!(res, value!({ "value1": 27, "value2": 90 }));
});