feat(proxy): record tunnel stability metrics

This commit is contained in:
fawney19
2026-05-08 22:03:17 +08:00
parent 9a84a6ff6c
commit a703acd1fe
81 changed files with 7229 additions and 1110 deletions

View File

@@ -1,3 +1,29 @@
mod pool;
pub use pool::{SqlitePool, SqlitePoolConfig, SqlitePoolFactory};
use crate::DataLayerError;
use sqlx::{sqlite::SqliteRow, Row};
pub(crate) fn sqlite_real(row: &SqliteRow, field: &str) -> Result<f64, DataLayerError> {
match row.try_get::<f64, _>(field) {
Ok(value) => Ok(value),
Err(real_err) => match row.try_get::<i64, _>(field) {
Ok(value) => Ok(value as f64),
Err(_) => Err(DataLayerError::sql(real_err)),
},
}
}
pub(crate) fn sqlite_optional_real(
row: &SqliteRow,
field: &str,
) -> Result<Option<f64>, DataLayerError> {
match row.try_get::<Option<f64>, _>(field) {
Ok(value) => Ok(value),
Err(real_err) => match row.try_get::<Option<i64>, _>(field) {
Ok(value) => Ok(value.map(|value| value as f64)),
Err(_) => Err(DataLayerError::sql(real_err)),
},
}
}