From 7df37f27564ed7bce37c2da3a1cbbe65a809ad1a Mon Sep 17 00:00:00 2001 From: Vincent Riquer Date: Sun, 16 Mar 2025 01:49:44 +0100 Subject: [PATCH] Update schema --- lib/database/checkVersion | 2 +- lib/database/open | 3 ++- lib/database/upgradedatabase_5_6 | 37 ++++++++++++++++++++++++++++++++ share/schema.sql | 2 ++ 4 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 lib/database/upgradedatabase_5_6 diff --git a/lib/database/checkVersion b/lib/database/checkVersion index 5b3b94d..40a443e 100644 --- a/lib/database/checkVersion +++ b/lib/database/checkVersion @@ -1,5 +1,5 @@ #!/bin/bash -currentdbversion=5 +currentdbversion=6 checkDatabaseVersion() { local dbversion if dbversion=$(Select atom version <<<"\"1\" = 1") diff --git a/lib/database/open b/lib/database/open index 796890a..2ea47d4 100644 --- a/lib/database/open +++ b/lib/database/open @@ -1,5 +1,6 @@ #!/bin/bash openDatabase() { + [[ -f "$database" ]] || populate_db=1 rm -f "$tempdir"/sqlite.{in,out} mkfifo "$tempdir"/sqlite.{in,out} sqlite3 -bail "$database" \ @@ -13,7 +14,7 @@ openDatabase() { exec 5>&3 exec 3> >(tee -a "$tempdir/debug.log" >&5) fi - cat $schema >&3 + (( populate_db )) && cat $schema >&3 echo '.separator ::AtOM:SQL:Sep::' >&3 echo 'PRAGMA foreign_keys = ON;' >&3 echo 'PRAGMA recursive_triggers = ON;' >&3 diff --git a/lib/database/upgradedatabase_5_6 b/lib/database/upgradedatabase_5_6 new file mode 100644 index 0000000..20c5d16 --- /dev/null +++ b/lib/database/upgradedatabase_5_6 @@ -0,0 +1,37 @@ +#!/bin/bash + +upgradedatabase_5_6() { + echo "Upgrading database to version 6... (backup is $database.bak_v5)" + cp "$database" "$database.bak_v5" + echo ' + ALTER TABLE tags ADD COLUMN replaygain_alb FLOAT; + ALTER TABLE tags ADD COLUMN replaygain_trk FLOAT; + DROP TRIGGER force_destination_update_on_tag_update; + CREATE TRIGGER IF NOT EXISTS force_destination_update_on_tag_update + AFTER UPDATE OF + genre, + albumartist, + year, + album, + disc, + artist, + track, + title, + composer, + performer, + releasecountry, + replaygain_alb, + replaygain_trk, + rate, + channels, + bitrate, + bitdepth + ON tags + BEGIN + UPDATE destination_files SET last_change=0 + WHERE source_file_id=old.source_file; + END; + ' >&3 + + Update atom version 6 <<<"1 = 1" +} \ No newline at end of file diff --git a/share/schema.sql b/share/schema.sql index 0704c2d..dcc0f91 100644 --- a/share/schema.sql +++ b/share/schema.sql @@ -59,6 +59,8 @@ CREATE TABLE IF NOT EXISTS tags ( composer TEXT, performer TEXT, releasecountry TEXT, + replaygain_alb FLOAT, + replaygain_trk FLOAT, depth INTEGER, rate INTEGER, channels INTEGER,