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
|
#!/bin/bash
|
||||||
closeDatabase() {
|
closeDatabase() {
|
||||||
|
echo 'vacuum;' >&3
|
||||||
echo .quit >&3
|
echo .quit >&3
|
||||||
(( debug )) && echo -n "Waiting for SQLite to terminate... "
|
(( debug )) && echo -n "Waiting for SQLite to terminate... "
|
||||||
wait
|
wait
|
||||||
|
|||||||
@ -15,4 +15,5 @@ openDatabase() {
|
|||||||
cat $schema >&3
|
cat $schema >&3
|
||||||
echo '.separator ::AtOM:SQL:Sep::' >&3
|
echo '.separator ::AtOM:SQL:Sep::' >&3
|
||||||
echo 'PRAGMA foreign_keys = ON;' >&3
|
echo 'PRAGMA foreign_keys = ON;' >&3
|
||||||
|
checkDatabaseVersion
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,7 @@
|
|||||||
BEGIN TRANSACTION;
|
BEGIN TRANSACTION;
|
||||||
|
CREATE TABLE IF NOT EXISTS atom (
|
||||||
|
version INTEGER
|
||||||
|
);
|
||||||
CREATE TABLE IF NOT EXISTS source_files (
|
CREATE TABLE IF NOT EXISTS source_files (
|
||||||
id INTEGER PRIMARY KEY,
|
id INTEGER PRIMARY KEY,
|
||||||
filename TEXT UNIQUE NOT NULL,
|
filename TEXT UNIQUE NOT NULL,
|
||||||
@ -111,8 +114,7 @@ CREATE TRIGGER IF NOT EXISTS create_tags AFTER INSERT ON source_files
|
|||||||
BEGIN
|
BEGIN
|
||||||
INSERT INTO tags (source_file,last_change) VALUES (new.id,0);
|
INSERT INTO tags (source_file,last_change) VALUES (new.id,0);
|
||||||
END;
|
END;
|
||||||
DROP TRIGGER IF EXISTS force_destination_update_on_tag_update;
|
CREATE TRIGGER IF NOT EXISTS force_destination_update_on_tag_update
|
||||||
CREATE TRIGGER force_destination_update_on_tag_update
|
|
||||||
AFTER UPDATE OF
|
AFTER UPDATE OF
|
||||||
genre,
|
genre,
|
||||||
albumartist,
|
albumartist,
|
||||||
@ -126,7 +128,8 @@ CREATE TRIGGER force_destination_update_on_tag_update
|
|||||||
performer,
|
performer,
|
||||||
rate,
|
rate,
|
||||||
channels,
|
channels,
|
||||||
bitrate
|
bitrate,
|
||||||
|
bitdepth
|
||||||
ON tags
|
ON tags
|
||||||
BEGIN
|
BEGIN
|
||||||
UPDATE destination_files SET last_change=0
|
UPDATE destination_files SET last_change=0
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user