fix(metrics): casting is the name of the game

This commit is contained in:
perf3ct 2025-08-23 20:31:56 +00:00
parent 1b4573f658
commit 4b5ee94724
No known key found for this signature in database
GPG Key ID: 569C4EEC436F5232
2 changed files with 17 additions and 17 deletions

View File

@ -482,14 +482,14 @@ impl Database {
COALESCE(COUNT(*)::INTEGER, 0) as total_sessions,
COALESCE(COUNT(*) FILTER (WHERE s.status = 'completed')::INTEGER, 0) as successful_sessions,
COALESCE(COUNT(*) FILTER (WHERE s.status = 'failed')::INTEGER, 0) as failed_sessions,
COALESCE(SUM(s.files_processed), 0)::BIGINT as total_files_processed,
COALESCE(SUM(s.total_bytes_processed), 0)::BIGINT as total_bytes_processed,
COALESCE(AVG(s.duration_ms / 1000.0), 0.0)::DOUBLE PRECISION as avg_session_duration_sec,
COALESCE(AVG(s.processing_rate_files_per_sec), 0.0)::DOUBLE PRECISION as avg_processing_rate,
COALESCE(SUM(s.total_http_requests), 0)::BIGINT as total_http_requests,
COALESCE(SUM(s.files_processed)::BIGINT, 0) as total_files_processed,
COALESCE(SUM(s.total_bytes_processed)::BIGINT, 0) as total_bytes_processed,
COALESCE(AVG(s.duration_ms / 1000.0)::DOUBLE PRECISION, 0.0) as avg_session_duration_sec,
COALESCE(AVG(s.processing_rate_files_per_sec)::DOUBLE PRECISION, 0.0) as avg_processing_rate,
COALESCE(SUM(s.total_http_requests)::BIGINT, 0) as total_http_requests,
CASE
WHEN SUM(s.total_http_requests) > 0
THEN (SUM(s.successful_requests)::DOUBLE PRECISION / SUM(s.total_http_requests) * 100.0)
WHEN SUM(s.total_http_requests)::BIGINT > 0
THEN (SUM(s.successful_requests)::BIGINT::DOUBLE PRECISION / SUM(s.total_http_requests)::BIGINT * 100.0)
ELSE 0.0
END as request_success_rate,
COALESCE((SELECT AVG(duration_ms) FROM webdav_request_metrics r

View File

@ -670,20 +670,20 @@ async fn collect_webdav_metrics(state: &Arc<AppState>) -> Result<WebDAVMetrics,
COUNT(*) as total_sessions,
COUNT(*) FILTER (WHERE status = 'completed') as successful_sessions,
COUNT(*) FILTER (WHERE status = 'failed') as failed_sessions,
COALESCE(SUM(files_processed), 0) as total_files_processed,
COALESCE(SUM(total_bytes_processed), 0) as total_bytes_processed,
COALESCE(AVG(duration_ms / 1000.0), 0) as avg_session_duration_sec,
COALESCE(AVG(processing_rate_files_per_sec), 0) as avg_processing_rate,
COALESCE(SUM(total_http_requests), 0) as total_http_requests,
COALESCE(SUM(files_processed)::BIGINT, 0) as total_files_processed,
COALESCE(SUM(total_bytes_processed)::BIGINT, 0) as total_bytes_processed,
COALESCE(AVG(duration_ms / 1000.0)::DOUBLE PRECISION, 0) as avg_session_duration_sec,
COALESCE(AVG(processing_rate_files_per_sec)::DOUBLE PRECISION, 0) as avg_processing_rate,
COALESCE(SUM(total_http_requests)::BIGINT, 0) as total_http_requests,
CASE
WHEN SUM(total_http_requests) > 0
THEN (SUM(successful_requests)::DECIMAL / SUM(total_http_requests) * 100)
ELSE 0
WHEN SUM(total_http_requests)::BIGINT > 0
THEN (SUM(successful_requests)::BIGINT::DECIMAL / SUM(total_http_requests)::BIGINT * 100)::DOUBLE PRECISION
ELSE 0::DOUBLE PRECISION
END as request_success_rate,
COALESCE(
(SELECT AVG(duration_ms) FROM webdav_request_metrics
(SELECT AVG(duration_ms)::DOUBLE PRECISION FROM webdav_request_metrics
WHERE started_at > NOW() - INTERVAL '24 hours'),
0
0::DOUBLE PRECISION
) as avg_request_duration_ms
FROM webdav_sync_sessions
WHERE started_at > NOW() - INTERVAL '24 hours'