pipa_core/logging/
schema.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Serialize)]
12pub struct AuditLogEntry<'a> {
13 pub timestamp: String, pub level: &'a str, pub event: &'a str, #[serde(skip_serializing_if = "Option::is_none")]
17 pub contract: Option<Contract<'a>>, #[serde(skip_serializing_if = "Option::is_none")]
19 pub target: Option<Target<'a>>, #[serde(skip_serializing_if = "Option::is_none")]
21 pub results: Option<Vec<RuleResult>>, pub executor: Executor, #[serde(skip_serializing_if = "Option::is_none")]
24 pub details: Option<&'a str>, #[serde(skip_serializing_if = "Option::is_none")]
26 pub summary: Option<ProcessSummary>, }
28
29#[derive(Serialize)]
31pub struct Contract<'a> {
32 pub name: &'a str,
33 pub version: &'a str,
34}
35
36#[derive(Serialize)]
38pub struct Target<'a> {
39 pub file: &'a str,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub column: Option<&'a str>,
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub rule: Option<&'a str>,
44}
45
46#[derive(Clone, Debug, Serialize, Deserialize)]
48pub struct RuleResult {
49 pub column: String, pub rule: String, pub result: String, pub details: Option<String>, }
54
55#[derive(Clone, Serialize)]
57pub struct Executor {
58 pub user: String, pub host: String, }
61
62#[derive(Serialize)]
64pub struct ProcessSummary {
65 pub contracts_run: usize,
66 pub contracts_failed: usize,
67 pub status: String, }