async-graphql/src/docs/simple_object.md

4.3 KiB

Define a GraphQL object with fields

See also the Book.

Similar to Object, but defined on a structure that automatically generates getters for all fields. For a list of valid field types, see Object. All fields are converted to camelCase.

Macro attributes

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
cache_control Object cache control CacheControl Y
extends Add fields to an entity that's defined in another service bool Y
visible If false, it will not be displayed in introspection. See also the Book. bool Y
visible Call the specified function. If the return value is false, it will not be displayed in introspection. string Y
concretes Specify how the concrete type of the generic SimpleObject should be implemented. *See also the Book ConcreteType Y
serial Resolve each field sequentially. bool Y

Field attributes

Attribute description Type Optional
skip Skip this field bool Y
name Field name string Y
deprecation Field deprecated bool Y
deprecation Field deprecation reason string Y
derived Generate derived fields See also the Book. object Y
owned Field resolver return a ownedship value bool Y
cache_control Field cache control CacheControl Y
external Mark a field as owned by another service. This allows service A to use fields from service B while also knowing at runtime the types of that field. bool Y
provides Annotate the expected returned fieldset from a field on a base type that is guaranteed to be selectable by the gateway. string Y
requires Annotate the required input fieldset from a base type for a resolver. It is used to develop a query plan where the required fields may not be needed by the client, but the service may need additional information from other services. string Y
guard Field of guard See also the Book string Y
visible If false, it will not be displayed in introspection. See also the Book. bool Y
visible Call the specified function. If the return value is false, it will not be displayed in introspection. string Y

Derived attributes

Attribute description Type Optional
name Generated derived field name string N
into Type to derived an into string Y
owned Field resolver return a ownedship value bool Y
with Function to apply to manage advanced use cases string Y

Examples

use async_graphql::*;

#[derive(SimpleObject)]
struct Query {
    value: i32,
}

# tokio::runtime::Runtime::new().unwrap().block_on(async move {
let schema = Schema::new(Query{ value: 10 }, EmptyMutation, EmptySubscription);
let res = schema.execute("{ value }").await.into_result().unwrap().data;
assert_eq!(res, value!({
    "value": 10,
}));
# });