SQL Schema versioning, VACUUM on exit
This commit is contained in:
parent
34b31e5974
commit
142c5438e6
26
lib/database/checkVersion
Normal file
26
lib/database/checkVersion
Normal file
@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
currentdbversion=1
|
||||
checkDatabaseVersion() {
|
||||
local dbversion
|
||||
if dbversion=$(Select atom version <<<"1 = 1")
|
||||
then
|
||||
if (( dbversion == currentdbversion ))
|
||||
then
|
||||
return 0
|
||||
elif (( dbversion < currentversion ))
|
||||
then
|
||||
until (( dbversion == currentversion ))
|
||||
do
|
||||
upgradedatabase_${dbversion}_$((dbversion+1))
|
||||
dbversion=$(Select atom version <<<"1 = 1")
|
||||
done
|
||||
else
|
||||
echo "Database schema version $dbversion is higher than
|
||||
that of this version of AtOM
|
||||
($currentdbversion). Bailing out." >&2
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
Insert atom 1 <<<"version $currentdbversion"
|
||||
fi
|
||||
}
|
||||
@ -1,5 +1,6 @@
|
||||
#!/bin/bash
|
||||
closeDatabase() {
|
||||
echo 'vacuum;' >&3
|
||||
echo .quit >&3
|
||||
(( debug )) && echo -n "Waiting for SQLite to terminate... "
|
||||
wait
|
||||
|
||||
@ -15,4 +15,5 @@ openDatabase() {
|
||||
cat $schema >&3
|
||||
echo '.separator ::AtOM:SQL:Sep::' >&3
|
||||
echo 'PRAGMA foreign_keys = ON;' >&3
|
||||
checkDatabaseVersion
|
||||
}
|
||||
|
||||
@ -1,4 +1,7 @@
|
||||
BEGIN TRANSACTION;
|
||||
CREATE TABLE IF NOT EXISTS atom (
|
||||
version INTEGER
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS source_files (
|
||||
id INTEGER PRIMARY KEY,
|
||||
filename TEXT UNIQUE NOT NULL,
|
||||
@ -111,8 +114,7 @@ CREATE TRIGGER IF NOT EXISTS create_tags AFTER INSERT ON source_files
|
||||
BEGIN
|
||||
INSERT INTO tags (source_file,last_change) VALUES (new.id,0);
|
||||
END;
|
||||
DROP TRIGGER IF EXISTS force_destination_update_on_tag_update;
|
||||
CREATE TRIGGER force_destination_update_on_tag_update
|
||||
CREATE TRIGGER IF NOT EXISTS force_destination_update_on_tag_update
|
||||
AFTER UPDATE OF
|
||||
genre,
|
||||
albumartist,
|
||||
@ -126,7 +128,8 @@ CREATE TRIGGER force_destination_update_on_tag_update
|
||||
performer,
|
||||
rate,
|
||||
channels,
|
||||
bitrate
|
||||
bitrate,
|
||||
bitdepth
|
||||
ON tags
|
||||
BEGIN
|
||||
UPDATE destination_files SET last_change=0
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user