sofie_db/page/listing/
resources.rs1use 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}