Force update of destinations after a tag update
Also force an update of the DB schema on each run.
This commit is contained in:
parent
2b87c4159a
commit
45685f8a7c
@ -12,7 +12,6 @@ openDatabase() {
|
|||||||
then
|
then
|
||||||
mkdir -p "${database%/*}"
|
mkdir -p "${database%/*}"
|
||||||
fi
|
fi
|
||||||
sqlite3 "$database" < $schema
|
|
||||||
fi
|
fi
|
||||||
sqlite3 -bail "$database" \
|
sqlite3 -bail "$database" \
|
||||||
< "$tempdir/sqlite.in" \
|
< "$tempdir/sqlite.in" \
|
||||||
@ -24,5 +23,6 @@ openDatabase() {
|
|||||||
exec 5>&3
|
exec 5>&3
|
||||||
exec 3> >(tee -a $tempdir/debug.log >&5)
|
exec 3> >(tee -a $tempdir/debug.log >&5)
|
||||||
fi
|
fi
|
||||||
|
cat $schema >&3
|
||||||
echo 'PRAGMA foreign_keys = ON;' >&3
|
echo 'PRAGMA foreign_keys = ON;' >&3
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
BEGIN TRANSACTION;
|
BEGIN TRANSACTION;
|
||||||
CREATE TABLE 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,
|
||||||
size INTEGER NOT NULL,
|
size INTEGER NOT NULL,
|
||||||
@ -10,11 +10,11 @@ CREATE TABLE source_files (
|
|||||||
FOREIGN KEY (mime_type) REFERENCES mime_types(id)
|
FOREIGN KEY (mime_type) REFERENCES mime_types(id)
|
||||||
ON DELETE SET NULL
|
ON DELETE SET NULL
|
||||||
);
|
);
|
||||||
CREATE TABLE destinations (
|
CREATE TABLE IF NOT EXISTS destinations (
|
||||||
id INTEGER PRIMARY KEY,
|
id INTEGER PRIMARY KEY,
|
||||||
name TEXT UNIQUE NOT NULL
|
name TEXT UNIQUE NOT NULL
|
||||||
);
|
);
|
||||||
CREATE TABLE destination_files (
|
CREATE TABLE IF NOT EXISTS destination_files (
|
||||||
id INTEGER PRIMARY KEY,
|
id INTEGER PRIMARY KEY,
|
||||||
filename TEXT,
|
filename TEXT,
|
||||||
old_filename TEXT,
|
old_filename TEXT,
|
||||||
@ -27,11 +27,11 @@ CREATE TABLE destination_files (
|
|||||||
FOREIGN KEY (destination_id) REFERENCES destinations(id)
|
FOREIGN KEY (destination_id) REFERENCES destinations(id)
|
||||||
ON DELETE CASCADE
|
ON DELETE CASCADE
|
||||||
);
|
);
|
||||||
CREATE TABLE mime_types (
|
CREATE TABLE IF NOT EXISTS mime_types (
|
||||||
id INTEGER PRIMARY KEY,
|
id INTEGER PRIMARY KEY,
|
||||||
mime_text TEXT UNIQUE NOT NULL
|
mime_text TEXT UNIQUE NOT NULL
|
||||||
);
|
);
|
||||||
CREATE TABLE mime_actions (
|
CREATE TABLE IF NOT EXISTS mime_actions (
|
||||||
id INTEGER PRIMARY KEY,
|
id INTEGER PRIMARY KEY,
|
||||||
mime_type INTEGER,
|
mime_type INTEGER,
|
||||||
destination_id INTEGER,
|
destination_id INTEGER,
|
||||||
@ -40,7 +40,7 @@ CREATE TABLE mime_actions (
|
|||||||
FOREIGN KEY (destination_id) REFERENCES destinations(id)
|
FOREIGN KEY (destination_id) REFERENCES destinations(id)
|
||||||
ON DELETE CASCADE
|
ON DELETE CASCADE
|
||||||
);
|
);
|
||||||
CREATE TABLE tags (
|
CREATE TABLE IF NOT EXISTS tags (
|
||||||
source_file INTEGER PRIMARY KEY,
|
source_file INTEGER PRIMARY KEY,
|
||||||
genre TEXT,
|
genre TEXT,
|
||||||
albumartist TEXT,
|
albumartist TEXT,
|
||||||
@ -61,13 +61,14 @@ CREATE TABLE tags (
|
|||||||
ON DELETE CASCADE
|
ON DELETE CASCADE
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE VIEW mime_type_actions AS
|
CREATE VIEW IF NOT EXISTS mime_type_actions AS
|
||||||
SELECT
|
SELECT
|
||||||
mime_types.id,mime_types.mime_text,
|
mime_types.id,mime_types.mime_text,
|
||||||
mime_actions.destination_id,mime_actions.action
|
mime_actions.destination_id,mime_actions.action
|
||||||
FROM mime_types INNER JOIN mime_actions
|
FROM mime_types INNER JOIN mime_actions
|
||||||
ON mime_actions.mime_type = mime_types.id;
|
ON mime_actions.mime_type = mime_types.id;
|
||||||
CREATE TRIGGER update_mime_actions INSTEAD OF UPDATE OF action ON mime_type_actions
|
CREATE TRIGGER IF NOT EXISTS update_mime_actions
|
||||||
|
INSTEAD OF UPDATE OF action ON mime_type_actions
|
||||||
BEGIN
|
BEGIN
|
||||||
UPDATE mime_actions
|
UPDATE mime_actions
|
||||||
SET action=new.action
|
SET action=new.action
|
||||||
@ -75,7 +76,8 @@ BEGIN
|
|||||||
AND destination_id=old.destination_id;
|
AND destination_id=old.destination_id;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
CREATE TRIGGER create_dest_files_and_mime_actions AFTER INSERT ON destinations
|
CREATE TRIGGER IF NOT EXISTS create_dest_files_and_mime_actions
|
||||||
|
AFTER INSERT ON destinations
|
||||||
BEGIN
|
BEGIN
|
||||||
INSERT INTO mime_actions
|
INSERT INTO mime_actions
|
||||||
(mime_type,destination_id)
|
(mime_type,destination_id)
|
||||||
@ -87,7 +89,7 @@ BEGIN
|
|||||||
FROM source_files;
|
FROM source_files;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
CREATE TRIGGER create_mime_actions AFTER INSERT ON mime_types
|
CREATE TRIGGER IF NOT EXISTS create_mime_actions AFTER INSERT ON mime_types
|
||||||
BEGIN
|
BEGIN
|
||||||
INSERT INTO mime_actions (mime_type,destination_id)
|
INSERT INTO mime_actions (mime_type,destination_id)
|
||||||
SELECT mime_types.id,destinations.id
|
SELECT mime_types.id,destinations.id
|
||||||
@ -95,18 +97,24 @@ BEGIN
|
|||||||
WHERE mime_types.id=new.id;
|
WHERE mime_types.id=new.id;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
CREATE INDEX sourcefiles_by_name ON source_files (filename,id);
|
CREATE INDEX IF NOT EXISTS sourcefiles_by_name ON source_files (filename,id);
|
||||||
|
|
||||||
CREATE TRIGGER create_destinations AFTER INSERT ON source_files
|
CREATE TRIGGER IF NOT EXISTS create_destinations AFTER INSERT ON source_files
|
||||||
BEGIN
|
BEGIN
|
||||||
INSERT INTO destination_files (source_file_id,destination_id)
|
INSERT INTO destination_files (source_file_id,destination_id)
|
||||||
SELECT source_files.id,destinations.id FROM source_files
|
SELECT source_files.id,destinations.id FROM source_files
|
||||||
INNER JOIN destinations
|
INNER JOIN destinations
|
||||||
WHERE source_files.id=new.id;
|
WHERE source_files.id=new.id;
|
||||||
END;
|
END;
|
||||||
CREATE TRIGGER create_tags AFTER INSERT ON source_files
|
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;
|
||||||
|
CREATE TRIGGER IF NOT EXISTS force_destination_update_on_tag_update
|
||||||
|
AFTER UPDATE ON tags
|
||||||
|
BEGIN
|
||||||
|
UPDATE destination_files SET last_change=0
|
||||||
|
WHERE source_file_id=old.source_file;
|
||||||
|
END;
|
||||||
|
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user