pub struct Object { /* private fields */ }
Expand description

A GraphQL object type

Examples

use async_graphql::{dynamic::*, value, Value};

let query = Object::new("Query").field(Field::new("value", TypeRef::named_nn(TypeRef::STRING), |ctx| {
    FieldFuture::new(async move { Ok(Some(Value::from("abc"))) })
}));


let schema = Schema::build(query.type_name(), None, None)
    .register(query)
    .finish()?;

assert_eq!(
   schema
       .execute("{ value }")
       .await
       .into_result()
       .unwrap()
       .data,
   value!({ "value": "abc" })
);

Implementations§

source§

impl Object

source

pub fn new(name: impl Into<String>) -> Object

Create a GraphQL object type

source

pub fn description(self, description: impl Into<String>) -> Object

Set the description

source

pub fn extends(self) -> Object

Indicates that an object or interface definition is an extension of another definition of that same type.

source

pub fn shareable(self) -> Object

Indicate that an object type’s field is allowed to be resolved by multiple subgraphs

source

pub fn inaccessible(self) -> Object

Indicate that an enum is not accessible from a supergraph when using Apollo Federation

Reference: https://www.apollographql.com/docs/federation/federated-types/federated-directives/#inaccessible

source

pub fn tags<I, T>(self, tags: I) -> Objectwhere
    I: IntoIterator<Item = T>,
    T: Into<String>,

Arbitrary string metadata that will be propagated to the supergraph when using Apollo Federation. This attribute is repeatable

Reference: https://www.apollographql.com/docs/federation/federated-types/federated-directives/#applying-metadata

source

pub fn field(self, field: Field) -> Object

Add an field to the object

source

pub fn implement(self, interface: impl Into<String>) -> Object

Add an implement to the object

source

pub fn key(self, fields: impl Into<String>) -> Object

Add an entity key

Examples
use async_graphql::{dynamic::*, Value};

let obj = Object::new("MyObj")
    .field(Field::new("a", TypeRef::named(TypeRef::INT), |_| {
        FieldFuture::new(async move { Ok(Some(Value::from(10))) })
    }))
    .field(Field::new("b", TypeRef::named(TypeRef::INT), |_| {
        FieldFuture::new(async move { Ok(Some(Value::from(20))) })
    }))
    .field(Field::new("c", TypeRef::named(TypeRef::INT), |_| {
        FieldFuture::new(async move { Ok(Some(Value::from(30))) })
    }))
    .key("a b")
    .key("c");
source

pub fn type_name(&self) -> &str

Returns the type name

Trait Implementations§

source§

impl Debug for Object

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl From<Object> for Type

source§

fn from(obj: Object) -> Type

Converts to this type from the input type.

Auto Trait Implementations§

§

impl !RefUnwindSafe for Object

§

impl Send for Object

§

impl Sync for Object

§

impl Unpin for Object

§

impl !UnwindSafe for Object

Blanket Implementations§

source§

impl<T> Any for Twhere
    T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere
    T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere
    T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere
    U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere
    U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere
    U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.