[−][src]Type Definition warpgrapher::engine::extensions::Extensions
type Extensions<GlobalCtx, RequestCtx> = Vec<Arc<dyn Extension<GlobalCtx, RequestCtx>>>;
Type alias for a thread-safe Extension vector.
Examples
#[derive(Clone, Debug)] pub struct MetadataExtension<GlobalCtx, RequestCtx> where GlobalCtx: GlobalContext, RequestCtx: RequestContext { _gctx: PhantomData<GlobalCtx>, _rctx: PhantomData<RequestCtx>, } impl<GlobalCtx, RequestCtx> Extension<GlobalCtx, RequestCtx> for MetadataExtension<GlobalCtx, RequestCtx> where GlobalCtx: GlobalContext, RequestCtx: RequestContext, { fn pre_request_hook( &self, _op_name: Option<String>, _global_ctx: Option<&GlobalCtx>, request_ctx: RequestCtx, _headers: &HashMap<String, String>, _db_pool: DatabasePool ) -> Result<RequestCtx, Box<dyn std::error::Error + Sync + Send>> { // Set values in request context, or take some other action Ok(request_ctx) } } let metadata_extension = MetadataExtension { _gctx: PhantomData, _rctx: PhantomData }; let extensions: Extensions<(), ()> = vec![Arc::new(metadata_extension)];