queriereries

This commit is contained in:
2023-08-29 21:34:01 +02:00
parent e491636701
commit 97b0026ab1
3 changed files with 23 additions and 0 deletions

2
rust/Cargo.lock generated
View File

@@ -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",

View File

@@ -117,3 +117,9 @@ version = "0.4"
[dependencies.metrics]
version = "0.21"
[dependencies.sha2]
version = "0.10"
[dependencies.base64]
version = "0.21"

View File

@@ -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<Vec<$struct_into>, Error> = sqlx::query_as!(
$struct_row,
$query,