use anyhow::Result;
use ubl_ledger::UblWriter;
use serde::Serialize;
pub struct AppCtx {
writer: UblWriter,
}
impl AppCtx {
#[must_use]
#[allow(clippy::missing_const_for_fn)]
pub fn new(writer: UblWriter) -> Self {
Self { writer }
}
pub fn log<T: Serialize>(&self, kind: &str, payload: &T) -> Result<()> {
self.writer.append(kind, payload, None, None)?;
Ok(())
}
pub fn received(&self, ev: &crate::events::IntentReceived) -> Result<()> {
self.log("sirp.intent.received", ev)
}
pub fn completed(&self, ev: &crate::events::IntentCompleted) -> Result<()> {
self.log("sirp.intent.completed", ev)
}
}