From d25792d36f47f06dcea17bc6925894748c0c8d6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=20Houl=C3=A9?= Date: Thu, 31 Aug 2023 17:45:27 +0200 Subject: [PATCH] wip --- .../query-tests-setup/src/query_result.rs | 18 ++++++++++++------ query-engine/request-handlers/src/response.rs | 4 ++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/query-engine/connector-test-kit-rs/query-tests-setup/src/query_result.rs b/query-engine/connector-test-kit-rs/query-tests-setup/src/query_result.rs index 0b0219dd40e7..a40bf2f0ccfe 100644 --- a/query-engine/connector-test-kit-rs/query-tests-setup/src/query_result.rs +++ b/query-engine/connector-test-kit-rs/query-tests-setup/src/query_result.rs @@ -13,7 +13,7 @@ struct SimpleGqlBatchResponse { errors: Vec, } -#[derive(Debug, Deserialize)] +#[derive(Debug, Serialize, Deserialize)] #[serde(untagged)] enum Response { Single(SimpleGqlResponse), @@ -91,8 +91,12 @@ impl QueryResult { pub fn errors(&self) -> Vec<&GQLError> { match self.response { - PrismaResponse::Single(ref s) => s.errors().collect(), - PrismaResponse::Multi(ref m) => m.errors().collect(), + Response::Single(ref s) => s.errors.iter().collect(), + Response::Multi(ref m) => m + .errors + .iter() + .chain(m.batch_result.iter().flat_map(|res| res.errors.iter())) + .collect(), } } @@ -121,15 +125,17 @@ impl From for QueryResult { }), }, PrismaResponse::Multi(reses) => QueryResult { - response: Response::Multi( - reses + response: Response::Multi(SimpleGqlBatchResponse { + batch_result: reses + .batch_result .into_iter() .map(|res| SimpleGqlResponse { data: serde_json::to_value(&response.data).unwrap(), errors: res.errors, }) .collect(), - ), + errors: reses.errors, + }), }, } } diff --git a/query-engine/request-handlers/src/response.rs b/query-engine/request-handlers/src/response.rs index f6295fc1dc41..6b4f4e545c02 100644 --- a/query-engine/request-handlers/src/response.rs +++ b/query-engine/request-handlers/src/response.rs @@ -22,10 +22,10 @@ pub struct GQLResponse { #[serde(rename_all = "camelCase")] pub struct GQLBatchResponse { #[serde(skip_serializing_if = "Vec::is_empty")] - batch_result: Vec, + pub batch_result: Vec, #[serde(skip_serializing_if = "Vec::is_empty")] - errors: Vec, + pub errors: Vec, #[serde(skip_serializing_if = "IndexMap::is_empty")] extensions: Map,