#[Subscription]
Define a GraphQL subscription
See also the Book.
The field function is a synchronization function that performs filtering. When true is returned, the message is pushed to the client.
The second parameter is the type of the field.
Starting with the third parameter is one or more filtering conditions, The filter condition is the parameter of the field.
The filter function should be synchronous.
Attribute | description | Type | Optional |
name | Object name | string | Y |
rename_fields | Rename all the fields according to the given case convention. The possible values are "lowercase", "UPPERCASE", "PascalCase", "camelCase", "snake_case", "SCREAMING_SNAKE_CASE". | string | Y |
rename_args | Rename all the arguments according to the given case convention. The possible values are "lowercase", "UPPERCASE", "PascalCase", "camelCase", "snake_case", "SCREAMING_SNAKE_CASE". | string | Y |
Attribute | description | Type | Optional |
name | Field name | string | Y |
deprecation | Field deprecation reason | string | Y |
guard | Field of guard | Guard | Y |
Attribute | description | Type | Optional |
name | Argument name | string | Y |
desc | Argument description | string | Y |
default | Use Default::default for default value | none | Y |
default | Argument default value | literal | Y |
default_with | Expression to generate default value | code string | Y |
validator | Input value validator | InputValueValidator | Y |
use async_graphql::*;
use futures::{Stream, StreamExt};
struct SubscriptionRoot;
#[Subscription]
impl SubscriptionRoot {
async fn value(&self, condition: i32) -> impl Stream<Item = i32> {
futures::stream::iter(0..condition)
}
}