Skip to content

Commit

Permalink
Merge pull request #1428 from vstepanyuk/extension-extended-context
Browse files Browse the repository at this point in the history
Feature extend ResolveInfo with field attribute
  • Loading branch information
sunli829 committed Jan 6, 2024
2 parents 44ae983 + d2c869c commit d7bb65d
Show file tree
Hide file tree
Showing 6 changed files with 12 additions and 2 deletions.
1 change: 1 addition & 0 deletions derive/src/subscription.rs
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,7 @@ pub fn generate(
name: field.node.name.node.as_str(),
alias: field.node.alias.as_ref().map(|alias| alias.node.as_str()),
is_for_introspection: false,
field: &field.node,
};
let resolve_fut = async {
#crate_name::OutputType::resolve(&msg, &ctx_selection_set, &*field)
Expand Down
2 changes: 2 additions & 0 deletions src/dynamic/resolve.rs
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,7 @@ fn collect_field<'a>(
name: &field.node.name.node,
alias: field.node.alias.as_ref().map(|alias| &*alias.node),
is_for_introspection: ctx_field.is_for_introspection,
field: &field.node,
};

let resolve_fut = async {
Expand Down Expand Up @@ -472,6 +473,7 @@ async fn resolve_list<'a>(
.as_ref()
.map(|alias| alias.node.as_str()),
is_for_introspection: ctx_item.is_for_introspection,
field: &ctx_item.item.node,
};

let resolve_fut = async { resolve(schema, &ctx_item, type_ref, Some(value)).await };
Expand Down
1 change: 1 addition & 0 deletions src/dynamic/subscription.rs
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,7 @@ impl Subscription {
name: field.node.name.node.as_str(),
alias: field.node.alias.as_ref().map(|alias| alias.node.as_str()),
is_for_introspection: false,
field: &field.node,
};
let resolve_fut = resolve(&schema, &ctx_field, &field_type, Some(&value));
futures_util::pin_mut!(resolve_fut);
Expand Down
8 changes: 6 additions & 2 deletions src/extensions/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,9 @@ pub use self::opentelemetry::OpenTelemetry;
#[cfg(feature = "tracing")]
pub use self::tracing::Tracing;
use crate::{
parser::types::ExecutableDocument, Data, DataContext, Error, QueryPathNode, Request, Response,
Result, SchemaEnv, ServerError, ServerResult, ValidationResult, Value, Variables,
parser::types::{ExecutableDocument, Field},
Data, DataContext, Error, QueryPathNode, Request, Response, Result, SchemaEnv, ServerError,
ServerResult, ValidationResult, Value, Variables,
};

/// Context for extension
Expand Down Expand Up @@ -128,6 +129,9 @@ pub struct ResolveInfo<'a> {

/// If `true` means the current field is for introspection.
pub is_for_introspection: bool,

/// Current field
pub field: &'a Field,
}

type RequestFut<'a> = &'a mut (dyn Future<Output = Response> + Send + Unpin);
Expand Down
1 change: 1 addition & 0 deletions src/resolver_utils/container.rs
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,7 @@ impl<'a> Fields<'a> {
.as_ref()
.map(|alias| alias.node.as_str()),
is_for_introspection: ctx_field.is_for_introspection,
field: &field.node,
};

let resolve_fut = root.resolve_field(&ctx_field);
Expand Down
1 change: 1 addition & 0 deletions src/resolver_utils/list.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ pub async fn resolve_list<'a, T: OutputType + 'a>(
name: field.node.name.node.as_str(),
alias: field.node.alias.as_ref().map(|alias| alias.node.as_str()),
is_for_introspection: ctx_idx.is_for_introspection,
field: &field.node,
};
let resolve_fut = async {
OutputType::resolve(&item, &ctx_idx, field)
Expand Down

0 comments on commit d7bb65d

Please sign in to comment.