use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use uuid::Uuid;
pub const SESSION_LIFECYCLE_TOPIC: &str = "jammi.audit.session_lifecycle.v1";
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum SessionLifecycleEvent {
Opened,
Closed,
TimedOut,
PartialDeletionFailure,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct SessionLifecycleRecord {
pub session_id: Uuid,
pub tenant_id: String,
pub event: SessionLifecycleEvent,
pub occurred_at: DateTime<Utc>,
pub ephemeral_table_count: usize,
pub deleted_row_count: u64,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub details: Option<serde_json::Value>,
}