[niepce] db: update triggers to properly delete files, folders and keywording
- From: Hubert Figuière <hub src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [niepce] db: update triggers to properly delete files, folders and keywording
- Date: Mon, 29 Oct 2018 03:15:58 +0000 (UTC)
commit 64cec82794d8402a0bc190917ab2fbb74678e3fd
Author: Hubert Figuière <hub figuiere net>
Date: Sun Oct 21 20:10:34 2018 -0400
db: update triggers to properly delete files, folders and keywording
src/engine/db/library.rs | 31 ++++++++++++++++++++++++++-----
1 file changed, 26 insertions(+), 5 deletions(-)
---
diff --git a/src/engine/db/library.rs b/src/engine/db/library.rs
index 8f00e1c..aa3b1d0 100644
--- a/src/engine/db/library.rs
+++ b/src/engine/db/library.rs
@@ -47,7 +47,7 @@ pub enum Managed {
YES = 1,
}
-const DB_SCHEMA_VERSION: i32 = 8;
+const DB_SCHEMA_VERSION: i32 = 9;
const DATABASENAME: &str = "niepcelibrary.db";
#[derive(Debug)]
@@ -200,6 +200,15 @@ impl Library {
parent_id INTEGER)",
&[],
).unwrap();
+ // Version 9
+ conn.execute(
+ "CREATE TRIGGER folder_delete_trigger AFTER DELETE ON folders \
+ BEGIN \
+ DELETE FROM files WHERE parent_id = old.id; \
+ END",
+ &[],
+ ).unwrap();
+ //
let trash_type = libfolder::FolderVirtualType::TRASH as i32;
conn.execute(
"insert into folders (name, locked, virtual, parent_id, path) \
@@ -230,12 +239,19 @@ impl Library {
UNIQUE(file_id, fsfile_id))",
&[],
).unwrap();
- conn.execute(
- "CREATE TRIGGER file_delete_trigger AFTER DELETE ON files \
+ conn.execute_batch(
+ "BEGIN; \
+ CREATE TRIGGER pre_file_delete_trigger BEFORE DELETE ON files \
+ BEGIN \
+ DELETE FROM fsfiles WHERE id = old.main_file \
+ OR id = old.xmp_file OR id = old.jpeg_file; \
+ END; \
+ CREATE TRIGGER file_delete_trigger AFTER DELETE ON files \
BEGIN \
DELETE FROM sidecars WHERE file_id = old.id; \
- END",
- &[],
+ DELETE FROM keywording WHERE file_id = old.id; \
+ END; \
+ COMMIT;",
).unwrap();
//
conn.execute(
@@ -248,6 +264,11 @@ impl Library {
keyword_id INTEGER, UNIQUE(file_id, keyword_id))",
&[],
).unwrap();
+ conn.execute("CREATE TRIGGER keyword_delete_trigger AFTER DELETE ON keywords \
+ BEGIN \
+ DELETE FROM keywording WHERE keyword_id = old.id; \
+ END;", &[],
+ ).unwrap();
conn.execute(
"CREATE TABLE labels (id INTEGER PRIMARY KEY,\
name TEXT, color TEXT)",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]