Extension::result now returns an Option

This commit is contained in:
sunli 2020-04-24 10:37:18 +08:00
parent 235b49bb7d
commit c1b493a56b
3 changed files with 5 additions and 5 deletions

View File

@ -54,5 +54,5 @@ pub trait Extension: Sync + Send + 'static {
fn resolve_field_end(&self, resolve_id: usize) {}
/// Get the results
fn result(&self) -> serde_json::Value;
fn result(&self) -> Option<serde_json::Value>;
}

View File

@ -112,12 +112,12 @@ impl Extension for ApolloTracing {
}
}
fn result(&self) -> serde_json::Value {
fn result(&self) -> Option<serde_json::Value> {
let mut inner = self.inner.lock();
inner
.resolves
.sort_by(|a, b| a.start_offset.cmp(&b.start_offset));
serde_json::json!({
Some(serde_json::json!({
"version": 1,
"startTime": inner.start_time.to_rfc3339(),
"endTime": inner.end_time.to_rfc3339(),
@ -125,6 +125,6 @@ impl Extension for ApolloTracing {
"execution": {
"resolvers": inner.resolves
}
})
}))
}
}

View File

@ -212,7 +212,7 @@ impl QueryBuilder {
Some(
extensions
.iter()
.map(|e| (e.name().to_string(), e.result()))
.filter_map(|e| e.result().map(|res| (e.name().to_string(), res)))
.collect::<serde_json::Map<_, _>>(),
)
} else {