diff --git a/src/query-frontend/src/key.rs b/src/query-frontend/src/key.rs index 3614ecd6f8..052557daed 100644 --- a/src/query-frontend/src/key.rs +++ b/src/query-frontend/src/key.rs @@ -73,6 +73,20 @@ impl From<&QueryFrontendRequest> for QueryKey { } } +impl From for QueryKey { + fn from(request: QueryFrontendRequest) -> Self { + Self { + db: request.db, + read_preference: request.read_preference, + query: request.query, + start: request.start, + end: request.end, + step: request.step, + lookback: request.lookback, + } + } +} + #[cfg(test)] mod tests { use super::*; @@ -163,6 +177,16 @@ mod tests { assert_eq!("db", request.key().db()); } + #[test] + fn owned_request_converts_into_key() { + let request = test_request(); + let borrowed_key = request.key(); + let owned_key = request.into_key(); + + assert_eq!(borrowed_key, owned_key); + assert_eq!("db", owned_key.db()); + } + #[test] fn debug_redacts_query_text() { let request = QueryFrontendRequest { diff --git a/src/query-frontend/src/request.rs b/src/query-frontend/src/request.rs index 8a960fef40..c5281f3e7c 100644 --- a/src/query-frontend/src/request.rs +++ b/src/query-frontend/src/request.rs @@ -54,6 +54,11 @@ impl QueryFrontendRequest { pub fn key(&self) -> QueryKey { QueryKey::from(self) } + + /// Converts this request into its exact identity [`QueryKey`]. + pub fn into_key(self) -> QueryKey { + QueryKey::from(self) + } } impl fmt::Debug for QueryFrontendRequest {