use crate::documents::DiagnosticDocument;
use crate::session::{AttentionItem, AttentionListResult};
pub const ATTENTION_LIST_SCHEMA: &str = "pointbreak.attention-list";
#[derive(serde::Serialize)]
#[serde(rename_all = "camelCase")]
pub struct AttentionListBody {
event_set_hash: String,
event_count: usize,
filters: AttentionListFiltersDocument,
items: Vec<AttentionItem>,
}
#[derive(serde::Serialize)]
#[serde(rename_all = "camelCase")]
struct AttentionListFiltersDocument {
#[serde(skip_serializing_if = "Option::is_none")]
revision: Option<String>,
}
pub fn attention_list_document(
result: AttentionListResult,
) -> DiagnosticDocument<AttentionListBody> {
let revision = result.revision.as_ref().map(|id| id.as_str().to_owned());
DiagnosticDocument::new(
ATTENTION_LIST_SCHEMA,
AttentionListBody {
event_set_hash: result.event_set_hash,
event_count: result.event_count,
filters: AttentionListFiltersDocument { revision },
items: result.items,
},
result.diagnostics,
)
}