From 97b0026ab1eb08ea4f8f3855f08e55e66f697f01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hannes=20K=C3=B6rber?= Date: Tue, 29 Aug 2023 21:34:01 +0200 Subject: [PATCH] queriereries --- rust/Cargo.lock | 2 ++ rust/Cargo.toml | 6 ++++++ rust/src/sqlite.rs | 15 +++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 6d9efa8..c643256 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -1429,6 +1429,7 @@ version = "0.1.0" dependencies = [ "axum", "axum-prometheus", + "base64 0.21.2", "clap", "console-subscriber", "futures", @@ -1441,6 +1442,7 @@ dependencies = [ "opentelemetry-jaeger", "serde", "serde_variant", + "sha2", "sqlx", "time", "tokio", diff --git a/rust/Cargo.toml b/rust/Cargo.toml index bae2511..768d787 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -117,3 +117,9 @@ version = "0.4" [dependencies.metrics] version = "0.21" + +[dependencies.sha2] +version = "0.10" + +[dependencies.base64] +version = "0.21" diff --git a/rust/src/sqlite.rs b/rust/src/sqlite.rs index c2ebc7c..4d54455 100644 --- a/rust/src/sqlite.rs +++ b/rust/src/sqlite.rs @@ -1,5 +1,7 @@ use std::time; +use base64::Engine as _; +use sha2::{Digest, Sha256}; use tracing::Instrument; use sqlx::sqlite::{SqliteConnectOptions, SqlitePoolOptions}; @@ -48,10 +50,23 @@ pub async fn migrate(url: &str) -> Result<(), StartError> { Ok(()) } +pub fn sqlx_query(query: &str, labels: &[(&'static str, String)]) { + let query_id = { + let mut hasher = Sha256::new(); + hasher.update(query); + hasher.finalize() + }; + let query_id = base64::engine::general_purpose::STANDARD.encode(query_id); + let mut labels = Vec::from(labels); + labels.push(("query_id", query_id)); + metrics::counter!("packager_database_queries_total", 1, &labels) +} + #[macro_export] macro_rules! query_all { ( $pool:expr, $struct_row:path, $struct_into:path, $query:expr, $( $args:tt )* ) => { async { + crate::sqlite::sqlx_query($query, &[]); let result: Result, Error> = sqlx::query_as!( $struct_row, $query,