kernel/event/record/
discard.rs1use serde::{Deserialize, Deserializer, Serialize};
10
11use crate::discard::Restoration;
12
13#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
19#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
20pub struct FileDiscarded {
21 pub paths: Vec<String>,
22 #[serde(
26 default,
27 deserialize_with = "restoration_if_named",
28 skip_serializing_if = "Option::is_none"
29 )]
30 pub restoration: Option<Restoration>,
31}
32
33#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
35#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
36pub struct DiscardRestored {
37 pub paths: Vec<String>,
38}
39
40#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
42#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
43pub struct AssetArchived {
44 #[serde(default = "fact")]
47 pub kind: String,
48 #[serde(default)]
50 pub day: u64,
51 #[serde(default)]
52 pub subject: String,
53}
54
55fn fact() -> String {
56 "fact".to_owned()
57}
58
59fn restoration_if_named<'de, D: Deserializer<'de>>(
60 deserializer: D,
61) -> Result<Option<Restoration>, D::Error> {
62 let raw = serde_json::Value::deserialize(deserializer)?;
63 Ok(serde_json::from_value(raw).ok())
64}
65
66#[cfg(test)]
67#[allow(clippy::unwrap_used, clippy::expect_used, reason = "test code")]
68mod tests;