From b41b8f94a408a6e832154ab6a486b9e08db70508 Mon Sep 17 00:00:00 2001 From: durch Date: Wed, 23 Mar 2022 21:11:01 +0100 Subject: [PATCH] Fix sqlx types --- validator-api/src/node_status_api/utils.rs | 20 ++++++++++---------- validator-api/src/storage/manager.rs | 8 ++++---- validator-api/src/storage/mod.rs | 2 +- validator-api/src/storage/models.rs | 14 ++++++++++++-- 4 files changed, 27 insertions(+), 17 deletions(-) diff --git a/validator-api/src/node_status_api/utils.rs b/validator-api/src/node_status_api/utils.rs index e599c3bd9e..184daa41d5 100644 --- a/validator-api/src/node_status_api/utils.rs +++ b/validator-api/src/node_status_api/utils.rs @@ -48,20 +48,20 @@ impl NodeUptimes { last_day .iter() .take(last_day_test_runs) - .map(|report| report.reliability as f32) + .map(|report| report.reliability() as f32) .sum() } else { // we average over expected number of test runs so if a node was not online for some of them // it's treated as if it had a "zero" status. last_day .iter() - .map(|report| report.reliability as f32) + .map(|report| report.reliability() as f32) .sum() }; let last_hour_reports = last_day .iter() - .filter(|report| report.timestamp >= hour_ago) + .filter(|report| report.timestamp() >= hour_ago) .count(); let last_hour_sum: f32 = if last_hour_reports > last_hour_test_runs { @@ -72,25 +72,25 @@ impl NodeUptimes { ); last_day .iter() - .filter(|report| report.timestamp >= hour_ago) + .filter(|report| report.timestamp() >= hour_ago) .take(last_hour_test_runs) - .map(|report| report.reliability as f32) + .map(|report| report.reliability() as f32) .sum() } else { last_day .iter() - .filter(|report| report.timestamp >= hour_ago) - .map(|report| report.reliability as f32) + .filter(|report| report.timestamp() >= hour_ago) + .map(|report| report.reliability() as f32) .sum() }; // find the most recent - let most_recent_report = last_day.iter().max_by_key(|report| report.timestamp); + let most_recent_report = last_day.iter().max_by_key(|report| report.timestamp()); let most_recent = if let Some(most_recent_report) = most_recent_report { // make sure its within last 15min - if most_recent_report.timestamp >= fifteen_minutes_ago { - most_recent_report.reliability + if most_recent_report.timestamp() >= fifteen_minutes_ago { + most_recent_report.reliability() } else { 0 } diff --git a/validator-api/src/storage/manager.rs b/validator-api/src/storage/manager.rs index 051a8b3d08..cf80dd7d18 100644 --- a/validator-api/src/storage/manager.rs +++ b/validator-api/src/storage/manager.rs @@ -169,9 +169,9 @@ impl StorageManager { // filter out nodes with valid uptime (in theory all should be 100% valid since we insert them ourselves, but // better safe than sorry and not use an unwrap) .filter_map(|row| { - Uptime::try_from(row.uptime) + Uptime::try_from(row.uptime.unwrap_or_default()) .map(|uptime| HistoricalUptime { - date: row.date, + date: row.date.unwrap_or_default(), uptime, }) .ok() @@ -207,9 +207,9 @@ impl StorageManager { // filter out nodes with valid uptime (in theory all should be 100% valid since we insert them ourselves, but // better safe than sorry and not use an unwrap) .filter_map(|row| { - Uptime::try_from(row.uptime) + Uptime::try_from(row.uptime.unwrap_or_default()) .map(|uptime| HistoricalUptime { - date: row.date, + date: row.date.unwrap_or_default(), uptime, }) .ok() diff --git a/validator-api/src/storage/mod.rs b/validator-api/src/storage/mod.rs index bb5a7079eb..4a17b172af 100644 --- a/validator-api/src/storage/mod.rs +++ b/validator-api/src/storage/mod.rs @@ -291,7 +291,7 @@ impl ValidatorApiStorage { let mut total: f32 = 0.0; for mixnode_status in mixnode_statuses { - total += mixnode_status.reliability as f32; + total += mixnode_status.reliability() as f32; } let uptime = match Uptime::from_uptime_sum(total, monitor_runs) { diff --git a/validator-api/src/storage/models.rs b/validator-api/src/storage/models.rs index c813979141..53200a5406 100644 --- a/validator-api/src/storage/models.rs +++ b/validator-api/src/storage/models.rs @@ -3,8 +3,18 @@ // Internally used struct to catch results from the database to calculate uptimes for given mixnode/gateway pub(crate) struct NodeStatus { - pub(crate) timestamp: i64, - pub(crate) reliability: u8, + pub timestamp: Option, + pub reliability: Option, +} + +impl NodeStatus { + pub fn timestamp(&self) -> i64 { + self.timestamp.unwrap_or_default() + } + + pub fn reliability(&self) -> u8 { + self.reliability.unwrap_or_default() + } } // Internally used struct to catch results from the database to find active mixnodes/gateways