linkrs_metrics/manager/
migration.rs1use std::collections::HashMap;
3
4use super::core::StatsManager;
5use super::metric_type::MetricType;
6
7impl StatsManager {
8 pub fn record_migration_start(&self) {
9 self.add_value(MetricType::MigrationTotalCount);
10 self.add_value(MetricType::MigrationActiveCount);
11 }
12
13 pub fn record_migration_success(&self, rows: u64, duration_ms: u64) {
14 self.dec_value(MetricType::MigrationActiveCount);
15 self.add_value_with_amount(MetricType::MigrationRowsMigrated, rows);
16 self.add_value_with_amount(MetricType::MigrationDurationMs, duration_ms);
17 }
18
19 pub fn record_migration_failure(&self, duration_ms: u64) {
20 self.dec_value(MetricType::MigrationActiveCount);
21 self.add_value(MetricType::MigrationErrorsTotal);
22 self.add_value_with_amount(MetricType::MigrationDurationMs, duration_ms);
23 }
24
25 pub fn get_migration_metrics(&self) -> HashMap<MetricType, u64> {
26 let mut out = HashMap::new();
27 for mt in [
28 MetricType::MigrationTotalCount,
29 MetricType::MigrationRowsMigrated,
30 MetricType::MigrationDurationMs,
31 MetricType::MigrationErrorsTotal,
32 MetricType::MigrationActiveCount,
33 ] {
34 if let Some(v) = self.get_value(mt) {
35 out.insert(mt, v);
36 }
37 }
38 out
39 }
40}