1use anyhow::Result;
3use ubl_ledger::UblWriter;
4use serde::Serialize;
5
6pub struct AppCtx {
8 writer: UblWriter,
9}
10impl AppCtx {
11 #[must_use]
13 #[allow(clippy::missing_const_for_fn)]
14 pub fn new(writer: UblWriter) -> Self {
15 Self { writer }
16 }
17 pub fn log<T: Serialize>(&self, kind: &str, payload: &T) -> Result<()> {
23 self.writer.append(kind, payload, None, None)?;
24 Ok(())
25 }
26 pub fn received(&self, ev: &crate::events::IntentReceived) -> Result<()> {
32 self.log("sirp.intent.received", ev)
33 }
34 pub fn completed(&self, ev: &crate::events::IntentCompleted) -> Result<()> {
40 self.log("sirp.intent.completed", ev)
41 }
42}