Fix postgres bigint counter decoding

This commit is contained in:
fawney19
2026-05-19 00:58:09 +08:00
parent 5eed329916
commit ed1d9fdb57
3 changed files with 14 additions and 14 deletions

View File

@@ -1518,7 +1518,7 @@ fn map_auth_api_key_export_row(
row_get(row, "is_active")?, row_get(row, "is_active")?,
row_get(row, "expires_at_unix_secs")?, row_get(row, "expires_at_unix_secs")?,
row_get(row, "auto_delete_on_expiry")?, row_get(row, "auto_delete_on_expiry")?,
row_get::<i32>(row, "total_requests")?.into(), row_get::<i64>(row, "total_requests")?,
row_get::<i64>(row, "total_tokens")?, row_get::<i64>(row, "total_tokens")?,
row_get(row, "total_cost_usd")?, row_get(row, "total_cost_usd")?,
row_get(row, "is_standalone")?, row_get(row, "is_standalone")?,

View File

@@ -589,7 +589,7 @@ fn map_token_row(row: &PgRow) -> Result<StoredManagementToken, DataLayerError> {
optional_unix_secs(row.try_get("expires_at_unix_secs").map_postgres_err()?), optional_unix_secs(row.try_get("expires_at_unix_secs").map_postgres_err()?),
optional_unix_secs(row.try_get("last_used_at_unix_secs").map_postgres_err()?), optional_unix_secs(row.try_get("last_used_at_unix_secs").map_postgres_err()?),
row.try_get("last_used_ip").map_postgres_err()?, row.try_get("last_used_ip").map_postgres_err()?,
u64::try_from(row.try_get::<i32, _>("usage_count").map_postgres_err()?).unwrap_or(0), u64::try_from(row.try_get::<i64, _>("usage_count").map_postgres_err()?).unwrap_or(0),
row.try_get("is_active").map_postgres_err()?, row.try_get("is_active").map_postgres_err()?,
) )
.with_timestamps( .with_timestamps(

View File

@@ -289,12 +289,12 @@ SELECT
NULL::jsonb AS utilization_samples, NULL::jsonb AS utilization_samples,
NULL::bigint AS last_probe_increase_at_unix_secs, NULL::bigint AS last_probe_increase_at_unix_secs,
NULL::integer AS last_rpm_peak, NULL::integer AS last_rpm_peak,
NULL::integer AS request_count, NULL::bigint AS request_count,
0::bigint AS total_tokens, 0::bigint AS total_tokens,
0::double precision AS total_cost_usd, 0::double precision AS total_cost_usd,
NULL::integer AS success_count, NULL::bigint AS success_count,
NULL::integer AS error_count, NULL::bigint AS error_count,
NULL::integer AS total_response_time_ms, NULL::bigint AS total_response_time_ms,
NULL::bigint AS last_used_at_unix_secs, NULL::bigint AS last_used_at_unix_secs,
FALSE AS auto_fetch_models, FALSE AS auto_fetch_models,
NULL::bigint AS last_models_fetch_at_unix_secs, NULL::bigint AS last_models_fetch_at_unix_secs,
@@ -1273,7 +1273,7 @@ INSERT INTO provider_api_keys (
.map(|value| value as f64), .map(|value| value as f64),
) )
.bind(key.last_rpm_peak.map(|value| value as i32)) .bind(key.last_rpm_peak.map(|value| value as i32))
.bind(key.request_count.map(|value| value as i32)) .bind(key.request_count.map(i64::from))
.bind(Some(i64::try_from(key.total_tokens).map_err(|_| { .bind(Some(i64::try_from(key.total_tokens).map_err(|_| {
DataLayerError::InvalidInput(format!( DataLayerError::InvalidInput(format!(
"provider catalog key.total_tokens exceeds i64: {}", "provider catalog key.total_tokens exceeds i64: {}",
@@ -1281,9 +1281,9 @@ INSERT INTO provider_api_keys (
)) ))
})?)) })?))
.bind(key.total_cost_usd) .bind(key.total_cost_usd)
.bind(key.success_count.map(|value| value as i32)) .bind(key.success_count.map(i64::from))
.bind(key.error_count.map(|value| value as i32)) .bind(key.error_count.map(i64::from))
.bind(key.total_response_time_ms.map(|value| value as i32)) .bind(key.total_response_time_ms.map(i64::from))
.bind(key.last_used_at_unix_secs.map(|value| value as f64)) .bind(key.last_used_at_unix_secs.map(|value| value as f64))
.bind(key.last_models_fetch_at_unix_secs.map(|value| value as f64)) .bind(key.last_models_fetch_at_unix_secs.map(|value| value as f64))
.bind(&key.last_models_fetch_error) .bind(&key.last_models_fetch_error)
@@ -2293,7 +2293,7 @@ fn map_key_row(row: &PgRow) -> Result<StoredProviderCatalogKey, DataLayerError>
}) })
}) })
.transpose()?; .transpose()?;
let request_count = row_get::<Option<i32>>(row, "request_count")? let request_count = row_get::<Option<i64>>(row, "request_count")?
.map(|value| { .map(|value| {
u32::try_from(value).map_err(|_| { u32::try_from(value).map_err(|_| {
DataLayerError::UnexpectedValue(format!( DataLayerError::UnexpectedValue(format!(
@@ -2314,7 +2314,7 @@ fn map_key_row(row: &PgRow) -> Result<StoredProviderCatalogKey, DataLayerError>
"invalid provider_api_keys.total_cost_usd".to_string(), "invalid provider_api_keys.total_cost_usd".to_string(),
)); ));
} }
let success_count = row_get::<Option<i32>>(row, "success_count")? let success_count = row_get::<Option<i64>>(row, "success_count")?
.map(|value| { .map(|value| {
u32::try_from(value).map_err(|_| { u32::try_from(value).map_err(|_| {
DataLayerError::UnexpectedValue(format!( DataLayerError::UnexpectedValue(format!(
@@ -2323,7 +2323,7 @@ fn map_key_row(row: &PgRow) -> Result<StoredProviderCatalogKey, DataLayerError>
}) })
}) })
.transpose()?; .transpose()?;
let error_count = row_get::<Option<i32>>(row, "error_count")? let error_count = row_get::<Option<i64>>(row, "error_count")?
.map(|value| { .map(|value| {
u32::try_from(value).map_err(|_| { u32::try_from(value).map_err(|_| {
DataLayerError::UnexpectedValue(format!( DataLayerError::UnexpectedValue(format!(
@@ -2332,7 +2332,7 @@ fn map_key_row(row: &PgRow) -> Result<StoredProviderCatalogKey, DataLayerError>
}) })
}) })
.transpose()?; .transpose()?;
let total_response_time_ms = row_get::<Option<i32>>(row, "total_response_time_ms")? let total_response_time_ms = row_get::<Option<i64>>(row, "total_response_time_ms")?
.map(|value| { .map(|value| {
u32::try_from(value).map_err(|_| { u32::try_from(value).map_err(|_| {
DataLayerError::UnexpectedValue(format!( DataLayerError::UnexpectedValue(format!(