Skip to main content

crabkey_types/
logger.rs

1use serde::Serialize;
2use time::OffsetDateTime;
3
4#[derive(Debug, Clone, Serialize)]
5pub struct AuditEvent {
6    pub request_id: String,
7    pub event_type: String,
8    pub owner_id: Option<String>,
9    pub metadata: serde_json::Value,
10    #[serde(with = "time::serde::rfc3339")]
11    pub timestamp: OffsetDateTime,
12}
13
14#[derive(Debug, thiserror::Error)]
15pub enum LogError {
16    #[error("backend error: {0}")]
17    Backend(String),
18}
19
20#[async_trait::async_trait]
21pub trait AuditLogger: Send + Sync + 'static {
22    async fn log(&self, event: AuditEvent) -> Result<(), LogError>;
23    async fn ping(&self) -> Result<(), LogError>;
24}