Skip to main content

schema_core/config/
soft_delete.rs

1use serde::{Deserialize, Serialize};
2
3use crate::common;
4
5use super::Filter;
6
7/// Tells the engine to treat a row as deleted rather than present, keyed off a
8/// mapped [field](SoftDeleteField) or a raw [column](SoftDeleteColumn). The
9/// optional `when` narrows it to rows matching a set of filters.
10#[derive(Debug, Clone, Hash, Serialize, Deserialize)]
11#[serde(rename_all = "snake_case")]
12pub enum SoftDelete {
13    Field(SoftDeleteField),
14    Column(SoftDeleteColumn),
15}
16
17#[derive(Debug, Clone, Hash, Serialize, Deserialize)]
18pub struct SoftDeleteField {
19    pub field: common::FieldName,
20    #[serde(default, skip_serializing_if = "Option::is_none")]
21    pub when: Option<Vec<Filter>>,
22}
23
24#[derive(Debug, Clone, Hash, Serialize, Deserialize)]
25pub struct SoftDeleteColumn {
26    pub column: common::ColumnName,
27    #[serde(default, skip_serializing_if = "Option::is_none")]
28    pub when: Option<Vec<Filter>>,
29}