elasticctl_api/alerts_ops/
recheck.rs1use super::*;
2use crate::{Observed, Preconditions};
3
4#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub enum AlertFacet {
6 Status,
7 Presence,
8}
9
10pub async fn observe_alerts(
11 t: &Transport,
12 ids: &[String],
13 facet: AlertFacet,
14) -> Result<Preconditions> {
15 super::require_targets(ids)?;
16 let mut unique = Vec::with_capacity(ids.len());
17 for id in ids {
18 if !unique.contains(id) {
19 unique.push(id.clone());
20 }
21 }
22 let page = alerts::search(t, &super::resolve_body(&unique)).await?;
23 Ok(Preconditions(
24 unique
25 .into_iter()
26 .map(|id| {
27 let state = page.hits.iter().find(|hit| hit.id == id).map(|hit| {
28 super::observed::alert_state(super::workflow_status(&hit.source), facet)
29 });
30 Observed {
31 object: "alert",
32 id,
33 state,
34 }
35 })
36 .collect(),
37 ))
38}