[−][src]Struct async_graphql::ContextBase
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, #[field(ref)] 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][+]
Auto Trait Implementations
impl<'a, T> !RefUnwindSafe for ContextBase<'a, T>
impl<'a, T> Send for ContextBase<'a, T> where
T: Send,
T: Send,
impl<'a, T> Sync for ContextBase<'a, T> where
T: Sync,
T: Sync,
impl<'a, T> Unpin for ContextBase<'a, T> where
T: Unpin,
T: Unpin,
impl<'a, T> !UnwindSafe for ContextBase<'a, T>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src][+]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> From<T> for T
[src][+]
impl<T, U> Into<U> for T where
U: From<T>,
[src][+]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src][+]
T: Clone,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src][+]
U: Into<T>,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src][+]
U: TryFrom<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
[+]
V: MultiLane<T>,