queriereries
This commit is contained in:
2
rust/Cargo.lock
generated
2
rust/Cargo.lock
generated
@@ -1429,6 +1429,7 @@ version = "0.1.0"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"axum",
|
"axum",
|
||||||
"axum-prometheus",
|
"axum-prometheus",
|
||||||
|
"base64 0.21.2",
|
||||||
"clap",
|
"clap",
|
||||||
"console-subscriber",
|
"console-subscriber",
|
||||||
"futures",
|
"futures",
|
||||||
@@ -1441,6 +1442,7 @@ dependencies = [
|
|||||||
"opentelemetry-jaeger",
|
"opentelemetry-jaeger",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_variant",
|
"serde_variant",
|
||||||
|
"sha2",
|
||||||
"sqlx",
|
"sqlx",
|
||||||
"time",
|
"time",
|
||||||
"tokio",
|
"tokio",
|
||||||
|
|||||||
@@ -117,3 +117,9 @@ version = "0.4"
|
|||||||
|
|
||||||
[dependencies.metrics]
|
[dependencies.metrics]
|
||||||
version = "0.21"
|
version = "0.21"
|
||||||
|
|
||||||
|
[dependencies.sha2]
|
||||||
|
version = "0.10"
|
||||||
|
|
||||||
|
[dependencies.base64]
|
||||||
|
version = "0.21"
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
use std::time;
|
use std::time;
|
||||||
|
|
||||||
|
use base64::Engine as _;
|
||||||
|
use sha2::{Digest, Sha256};
|
||||||
use tracing::Instrument;
|
use tracing::Instrument;
|
||||||
|
|
||||||
use sqlx::sqlite::{SqliteConnectOptions, SqlitePoolOptions};
|
use sqlx::sqlite::{SqliteConnectOptions, SqlitePoolOptions};
|
||||||
@@ -48,10 +50,23 @@ pub async fn migrate(url: &str) -> Result<(), StartError> {
|
|||||||
Ok(())
|
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_export]
|
||||||
macro_rules! query_all {
|
macro_rules! query_all {
|
||||||
( $pool:expr, $struct_row:path, $struct_into:path, $query:expr, $( $args:tt )* ) => {
|
( $pool:expr, $struct_row:path, $struct_into:path, $query:expr, $( $args:tt )* ) => {
|
||||||
async {
|
async {
|
||||||
|
crate::sqlite::sqlx_query($query, &[]);
|
||||||
let result: Result<Vec<$struct_into>, Error> = sqlx::query_as!(
|
let result: Result<Vec<$struct_into>, Error> = sqlx::query_as!(
|
||||||
$struct_row,
|
$struct_row,
|
||||||
$query,
|
$query,
|
||||||
|
|||||||
Reference in New Issue
Block a user