use confique::Config;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Config, JsonSchema)]
pub struct AuditConfig {
#[config(default = true)]
#[serde(default = "default_true")]
pub enabled: bool,
#[config(default = "memory")]
#[serde(default = "default_audit_backend")]
pub backend: String,
#[serde(default)]
pub file_path: Option<String>,
#[config(default = "fail_closed")]
#[serde(default = "default_fail_closed")]
pub failure_strategy: String,
#[config(default = 1000)]
#[serde(default = "default_1000")]
pub max_defer_queue: usize,
}
impl Default for AuditConfig {
fn default() -> Self {
Self {
enabled: true,
backend: "memory".into(),
file_path: None,
failure_strategy: "fail_closed".into(),
max_defer_queue: 1000,
}
}
}
fn default_true() -> bool {
true
}
fn default_audit_backend() -> String {
"memory".into()
}
fn default_fail_closed() -> String {
"fail_closed".into()
}
fn default_1000() -> usize {
1000
}