Skip to content

Commit df2b378

Browse files
authored
feat: add last triggered timestamp to alerts (#1419)
1 parent 92485d4 commit df2b378

File tree

3 files changed

+18
-0
lines changed

3 files changed

+18
-0
lines changed

src/alerts/alert_structs.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,7 @@ impl AlertRequest {
316316
notification_config: self.notification_config,
317317
created: Utc::now(),
318318
tags: self.tags,
319+
last_triggered_at: None,
319320
};
320321
Ok(config)
321322
}
@@ -342,6 +343,7 @@ pub struct AlertConfig {
342343
pub notification_config: NotificationConfig,
343344
pub created: DateTime<Utc>,
344345
pub tags: Option<Vec<String>>,
346+
pub last_triggered_at: Option<DateTime<Utc>>,
345347
}
346348

347349
#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)]
@@ -367,6 +369,7 @@ pub struct AlertConfigResponse {
367369
pub notification_config: NotificationConfig,
368370
pub created: DateTime<Utc>,
369371
pub tags: Option<Vec<String>>,
372+
pub last_triggered_at: Option<DateTime<Utc>>,
370373
}
371374

372375
impl AlertConfig {
@@ -405,6 +408,7 @@ impl AlertConfig {
405408
notification_config: self.notification_config,
406409
created: self.created,
407410
tags: self.tags,
411+
last_triggered_at: self.last_triggered_at,
408412
}
409413
}
410414
}

src/alerts/alert_types.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ pub struct ThresholdAlert {
6262
pub created: DateTime<Utc>,
6363
pub tags: Option<Vec<String>>,
6464
pub datasets: Vec<String>,
65+
pub last_triggered_at: Option<DateTime<Utc>>,
6566
}
6667

6768
#[async_trait]
@@ -192,6 +193,11 @@ impl AlertTrait for ThresholdAlert {
192193
// update state in memory
193194
self.state = new_state;
194195

196+
// if new state is `Triggered`, change triggered at
197+
if new_state.eq(&AlertState::Triggered) {
198+
self.last_triggered_at = Some(Utc::now());
199+
}
200+
195201
// update on disk
196202
store.put_alert(self.id, &self.to_alert_config()).await?;
197203
// The task should have already been removed from the list of running tasks
@@ -220,6 +226,11 @@ impl AlertTrait for ThresholdAlert {
220226
// update state in memory
221227
self.state = new_state;
222228

229+
// if new state is `Triggered`, change triggered at
230+
if new_state.eq(&AlertState::Triggered) {
231+
self.last_triggered_at = Some(Utc::now());
232+
}
233+
223234
// update on disk
224235
store.put_alert(self.id, &self.to_alert_config()).await?;
225236

@@ -367,6 +378,7 @@ impl From<AlertConfig> for ThresholdAlert {
367378
created: value.created,
368379
tags: value.tags,
369380
datasets: value.datasets,
381+
last_triggered_at: value.last_triggered_at,
370382
}
371383
}
372384
}
@@ -389,6 +401,7 @@ impl From<ThresholdAlert> for AlertConfig {
389401
created: val.created,
390402
tags: val.tags,
391403
datasets: val.datasets,
404+
last_triggered_at: val.last_triggered_at,
392405
}
393406
}
394407
}

src/alerts/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ impl AlertConfig {
134134
notification_config: NotificationConfig::default(),
135135
created: Utc::now(),
136136
tags: None,
137+
last_triggered_at: None,
137138
};
138139

139140
// Save the migrated alert back to storage

0 commit comments

Comments
 (0)