diff --git a/src/context.rs b/src/context.rs index 5d318e36..d8ea9b23 100644 --- a/src/context.rs +++ b/src/context.rs @@ -254,6 +254,7 @@ pub struct QueryEnvInner { pub uploads: Vec, pub session_data: Arc, pub ctx_data: Arc, + pub extension_data: Arc, pub http_headers: Mutex, pub introspection_mode: IntrospectionMode, pub errors: Mutex>, @@ -392,9 +393,10 @@ impl<'a, T> ContextBase<'a, T> { /// the specified type data does not exist. pub fn data_opt(&self) -> Option<&'a D> { self.query_env - .ctx_data + .extension_data .0 .get(&TypeId::of::()) + .or_else(|| self.query_env.ctx_data.0.get(&TypeId::of::())) .or_else(|| self.query_env.session_data.0.get(&TypeId::of::())) .or_else(|| self.schema_env.data.0.get(&TypeId::of::())) .and_then(|d| d.downcast_ref::()) diff --git a/src/schema.rs b/src/schema.rs index 096b50d7..9904bfd6 100644 --- a/src/schema.rs +++ b/src/schema.rs @@ -593,6 +593,7 @@ where uploads: request.uploads, session_data, ctx_data: query_data, + extension_data: Arc::new(request.data), http_headers: Default::default(), introspection_mode: request.introspection_mode, errors: Default::default(),