@@ -62,6 +62,7 @@ pub struct ThresholdAlert {
62
62
pub created : DateTime < Utc > ,
63
63
pub tags : Option < Vec < String > > ,
64
64
pub datasets : Vec < String > ,
65
+ pub last_triggered_at : Option < DateTime < Utc > > ,
65
66
}
66
67
67
68
#[ async_trait]
@@ -192,6 +193,11 @@ impl AlertTrait for ThresholdAlert {
192
193
// update state in memory
193
194
self . state = new_state;
194
195
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
+
195
201
// update on disk
196
202
store. put_alert ( self . id , & self . to_alert_config ( ) ) . await ?;
197
203
// The task should have already been removed from the list of running tasks
@@ -220,6 +226,11 @@ impl AlertTrait for ThresholdAlert {
220
226
// update state in memory
221
227
self . state = new_state;
222
228
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
+
223
234
// update on disk
224
235
store. put_alert ( self . id , & self . to_alert_config ( ) ) . await ?;
225
236
@@ -367,6 +378,7 @@ impl From<AlertConfig> for ThresholdAlert {
367
378
created : value. created ,
368
379
tags : value. tags ,
369
380
datasets : value. datasets ,
381
+ last_triggered_at : value. last_triggered_at ,
370
382
}
371
383
}
372
384
}
@@ -389,6 +401,7 @@ impl From<ThresholdAlert> for AlertConfig {
389
401
created : val. created ,
390
402
tags : val. tags ,
391
403
datasets : val. datasets ,
404
+ last_triggered_at : val. last_triggered_at ,
392
405
}
393
406
}
394
407
}
0 commit comments