[][src]Struct async_graphql::ContextBase

pub struct ContextBase<'a, T> {
    pub path_node: Option<QueryPathNode<'a>>,
    // some fields omitted
}

Query context

Fields

path_node: Option<QueryPathNode<'a>>

Implementations

impl<'a, T> ContextBase<'a, T>[src]

pub fn data<D: Any + Send + Sync>(&self) -> &D[src]

Gets the global data defined in the Context or Schema.

If both Schema and Query have the same data type, the data in the Query is obtained.

Panics

It will panic if the specified data type does not exist.

pub fn data_opt<D: Any + Send + Sync>(&self) -> Option<&D>[src]

Gets the global data defined in the Context or Schema, returns None if the specified type data does not exist.

impl<'a> ContextBase<'a, &'a Positioned<Field>>[src]

pub fn position(&self) -> Pos[src]

Get the position of the current field in the query code.

pub fn look_ahead(&self) -> Lookahead[src]

Creates a uniform interface to inspect the forthcoming selections.

Examples

use async_graphql::*;

#[SimpleObject]
struct Detail {
    c: i32,
    d: i32,
}

#[SimpleObject]
struct MyObj {
    a: i32,
    b: i32,
    detail: Detail,
}

struct Query;

#[Object]
impl Query {
    async fn obj(&self, ctx: &Context<'_>) -> MyObj {
        if ctx.look_ahead().field("a").exists() {
            // This is a query like `obj { a }`
        } else if ctx.look_ahead().field("detail").field("c").exists() {
            // This is a query like `obj { detail { c } }`
        } else {
            // This query doesn't have `a`
        }
        unimplemented!()
    }
}

Trait Implementations

impl<'a, T: Clone> Clone for ContextBase<'a, T>[src]

impl<'a, T> Deref for ContextBase<'a, T>[src]

type Target = T

The resulting type after dereferencing.

Auto Trait Implementations

impl<'a, T> !RefUnwindSafe for ContextBase<'a, T>

impl<'a, T> Send for ContextBase<'a, T> where
    T: Send

impl<'a, T> Sync for ContextBase<'a, T> where
    T: Sync

impl<'a, T> Unpin for ContextBase<'a, T> where
    T: Unpin

impl<'a, T> !UnwindSafe for ContextBase<'a, T>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,