Skip to main content

sofie_db/page/listing/
resources.rs

1use sofie_core::{Error, Result, SqlValue};
2
3use crate::Aggregate;
4use crate::aggregate::table;
5use crate::requested::{STAMP_REQUESTED, stored_mut};
6
7pub fn delete_softly<A: Aggregate>(aggregate: &mut A) -> Result<()> {
8    if !table::<A>().hiding().any(|column| column == "deleted_at") {
9        return Err(Error::Rule(format!(
10            "a {} cannot be deleted: it keeps no deleted records",
11            A::NAME
12        )));
13    }
14    let deleted_at = stored_mut(aggregate, "deleted_at");
15    if *deleted_at == SqlValue::Null {
16        *deleted_at = STAMP_REQUESTED;
17    }
18    Ok(())
19}