1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
//! Bridge resolvers.
use async_trait::async_trait;
use crate::types::{BridgedMutation, BridgedQuery, MutationResult, QueryResult};
use crate::BridgeMetadata;
/// The resolver of a bridge query.
///
/// This type is required to be implemented when the `resolvable` feature is enabled.
/// Please refer to the crate implementation for more information.
#[async_trait(?Send)]
pub trait QueryResolver: BridgedQuery {
/// The context type.
///
/// This type needs to match the `CTX` type parameter of the bridge it is added.
type Context: 'static;
/// Resolves the current query.
async fn resolve(
meta: &BridgeMetadata<Self::Context>,
input: &Self::Input,
) -> QueryResult<Self>;
}
/// The resolver of a bridge mutation.
///
/// This type is required to be implemented when the `resolvable` feature is enabled.
/// Please refer to the crate implementation for more information.
#[async_trait(?Send)]
pub trait MutationResolver: BridgedMutation {
/// The context type.
///
/// This type needs to match the `CTX` type parameter of the bridge it is added.
type Context: 'static;
/// Resolves the current mutation.
async fn resolve(
meta: &BridgeMetadata<Self::Context>,
input: &Self::Input,
) -> MutationResult<Self>;
}