From 45ab1f4cc6dd6c112b690789bbf6a9dd8abc75d0 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Sat, 24 May 2025 19:38:49 -0400 Subject: [PATCH] Add trigger fix for rename handling --- .../db/migrations/0007_fix_rename_trigger.sql | 20 +++++++++++++++++++ libmarlin/src/db/mod.rs | 4 ++++ 2 files changed, 24 insertions(+) create mode 100644 libmarlin/src/db/migrations/0007_fix_rename_trigger.sql diff --git a/libmarlin/src/db/migrations/0007_fix_rename_trigger.sql b/libmarlin/src/db/migrations/0007_fix_rename_trigger.sql new file mode 100644 index 0000000..b1a772b --- /dev/null +++ b/libmarlin/src/db/migrations/0007_fix_rename_trigger.sql @@ -0,0 +1,20 @@ +-- src/db/migrations/0007_fix_rename_trigger.sql +PRAGMA foreign_keys = ON; +PRAGMA journal_mode = WAL; + +-- Recreate files_fts_au_file trigger using INSERT OR REPLACE +DROP TRIGGER IF EXISTS files_fts_au_file; +CREATE TRIGGER files_fts_au_file +AFTER UPDATE OF path ON files +BEGIN + INSERT OR REPLACE INTO files_fts(rowid, path, tags_text, attrs_text) + SELECT NEW.id, + NEW.path, + (SELECT IFNULL(GROUP_CONCAT(t.name, ' '), '') + FROM file_tags ft + JOIN tags t ON ft.tag_id = t.id + WHERE ft.file_id = NEW.id), + (SELECT IFNULL(GROUP_CONCAT(a.key || '=' || a.value, ' '), '') + FROM attributes a + WHERE a.file_id = NEW.id); +END; diff --git a/libmarlin/src/db/mod.rs b/libmarlin/src/db/mod.rs index 39a9996..7edaf01 100644 --- a/libmarlin/src/db/mod.rs +++ b/libmarlin/src/db/mod.rs @@ -50,6 +50,10 @@ const MIGRATIONS: &[(&str, &str)] = &[ "0006_drop_tags_canonical_id.sql", include_str!("migrations/0006_drop_tags_canonical_id.sql"), ), + ( + "0007_fix_rename_trigger.sql", + include_str!("migrations/0007_fix_rename_trigger.sql"), + ), ]; /* ─── schema helpers ─────────────────────────────────────────────── */