Skip to content

Commit fccc0f5

Browse files
authored
engine-(v1,v2): allow receiving trusted document ids under documentId (#1557)
In addition to the `doc_id` field documented in the relay docs and the apollo client extension format. The draft spec appendix (graphql/graphql-over-http#264) uses the `documentId` key. part of GB-6253 (the second part is docs)
1 parent b7687eb commit fccc0f5

File tree

5 files changed

+13
-12
lines changed

5 files changed

+13
-12
lines changed

engine/crates/engine-v2/src/engine/trusted_documents.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ impl Engine {
1818
) -> Result<(), GraphqlError> {
1919
let trusted_documents_enabled = self.env.trusted_documents.is_enabled();
2020
let persisted_query_extension = mem::take(&mut request.extensions.persisted_query);
21-
let doc_id = mem::take(&mut request.operation_plan_cache_key.doc_id);
21+
let document_id = mem::take(&mut request.operation_plan_cache_key.document_id);
2222

23-
match (trusted_documents_enabled, persisted_query_extension, doc_id) {
23+
match (trusted_documents_enabled, persisted_query_extension, document_id) {
2424
(true, None, None) => {
2525
if self
2626
.env
@@ -32,7 +32,7 @@ impl Engine {
3232
Ok(())
3333
} else {
3434
Err(GraphqlError::new(
35-
"Cannot execute a trusted document query: missing doc_id or the persistedQuery extension.",
35+
"Cannot execute a trusted document query: missing documentId, doc_id or the persistedQuery extension.",
3636
))
3737
}
3838
}

engine/crates/engine/src/request.rs

+5-4
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,9 @@ pub struct OperationPlanCacheKey {
8585
pub operation_name: Option<String>,
8686

8787
/// Used by [relay-style persisted queries](https://relay.dev/docs/guides/persisted-queries/).
88-
#[serde(default, rename = "doc_id", skip_serializing_if = "Option::is_none")]
89-
pub doc_id: Option<String>,
88+
#[serde(default, skip_serializing_if = "Option::is_none")]
89+
#[serde(alias = "doc_id")]
90+
pub document_id: Option<String>,
9091

9192
/// Force enable introspection queries for this request.
9293
#[serde(skip)]
@@ -109,7 +110,7 @@ impl Request {
109110
operation_name: None,
110111
introspection_state: IntrospectionState::UserPreference,
111112
disable_operation_limits: false,
112-
doc_id: None,
113+
document_id: None,
113114
},
114115
ray_id: String::new(),
115116
variables: Variables::default(),
@@ -223,7 +224,7 @@ impl Debug for Request {
223224
.field("operation_name", &self.operation_name())
224225
.field("variables", &self.variables)
225226
.field("extensions", &self.extensions)
226-
.field("doc_id", &self.operation_plan_cache_key.doc_id)
227+
.field("document_id", &self.operation_plan_cache_key.document_id)
227228
.finish_non_exhaustive()
228229
}
229230
}

engine/crates/gateway-core/src/trusted_documents.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ where
2222
) -> Result<(), PersistedQueryError> {
2323
let trusted_documents_enabled = self.trusted_documents.is_enabled();
2424
let persisted_query_extension = mem::take(&mut request.extensions.persisted_query);
25-
let doc_id = mem::take(&mut request.operation_plan_cache_key.doc_id);
25+
let doc_id = mem::take(&mut request.operation_plan_cache_key.document_id);
2626

2727
match (trusted_documents_enabled, persisted_query_extension, doc_id) {
2828
(true, None, None) => {
@@ -197,7 +197,7 @@ pub(super) enum PersistedQueryError {
197197
UnsupportedVersion,
198198
#[error("Internal server error (trusted documents)")]
199199
InternalServerError,
200-
#[error("Cannot execute a trusted document query: missing doc_id or the persistedQuery extension.")]
200+
#[error("Cannot execute a trusted document query: missing documentId, doc_id or the persistedQuery extension.")]
201201
BadRequest,
202202
#[error("Trusted document queries must include the {CLIENT_NAME_HEADER_NAME} header")]
203203
MissingClientName,

engine/crates/integration-tests/src/engine/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ impl GraphQlRequest {
134134
if let Some(extensions) = self.extensions {
135135
request.extensions = extensions;
136136
}
137-
request.operation_plan_cache_key.doc_id = self.doc_id;
137+
request.operation_plan_cache_key.document_id = self.doc_id;
138138
request
139139
}
140140
}

engine/crates/integration-tests/tests/federation/trusted_documents.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ fn regular_non_persisted_queries_are_rejected() {
110110
{
111111
"errors": [
112112
{
113-
"message": "Cannot execute a trusted document query: missing doc_id or the persistedQuery extension."
113+
"message": "Cannot execute a trusted document query: missing documentId, doc_id or the persistedQuery extension."
114114
}
115115
]
116116
}
@@ -193,7 +193,7 @@ fn bypass_header() {
193193
{
194194
"errors": [
195195
{
196-
"message": "Cannot execute a trusted document query: missing doc_id or the persistedQuery extension."
196+
"message": "Cannot execute a trusted document query: missing documentId, doc_id or the persistedQuery extension."
197197
}
198198
]
199199
}

0 commit comments

Comments
 (0)