48 lines
1.4 KiB
SQL
48 lines
1.4 KiB
SQL
BEGIN TRANSACTION;
|
|
CREATE TABLE source_files (
|
|
id INTEGER PRIMARY KEY,
|
|
filename TEXT UNIQUE NOT NULL,
|
|
size INTEGER NOT NULL,
|
|
hash TEXT,
|
|
mime_type INTEGER,
|
|
last_change INTEGER NOT NULL DEFAULT (strftime('%s','now')),
|
|
last_seen INTEGER NOT NULL DEFAULT (strftime('%s','now')),
|
|
FOREIGN KEY (mime_type) REFERENCES mime_types(id)
|
|
);
|
|
CREATE TABLE destinations (
|
|
id INTEGER PRIMARY KEY,
|
|
name TEXT UNIQUE NOT NULL
|
|
);
|
|
CREATE TABLE destination_files (
|
|
id INTEGER PRIMARY KEY,
|
|
filename TEXT,
|
|
last_change INTEGER NOT NULL DEFAULT 0,
|
|
source_file_id INTEGER,
|
|
destination_id INTEGER,
|
|
FOREIGN KEY (source_file_id) REFERENCES source_files(id),
|
|
FOREIGN KEY (destination_id) REFERENCES destinations(id)
|
|
);
|
|
CREATE TABLE mime_types (
|
|
id INTEGER PRIMARY KEY,
|
|
destination_id INTEGER,
|
|
mime_text TEXT UNIQUE NOT NULL,
|
|
action INTEGER DEFAULT 1,
|
|
FOREIGN KEY (destination_id) REFERENCES destinations(id)
|
|
);
|
|
|
|
CREATE INDEX sourcefiles_by_name ON source_files (filename,id);
|
|
|
|
CREATE TRIGGER create_destinations AFTER INSERT ON source_files
|
|
BEGIN
|
|
INSERT INTO destination_files (source_file_id,destination_id)
|
|
SELECT source_files.id,destinations.id FROM source_files
|
|
INNER JOIN destinations
|
|
WHERE source_files.id=new.id;
|
|
END;
|
|
CREATE TRIGGER delete_destinations_files AFTER DELETE ON source_files
|
|
BEGIN
|
|
UPDATE destination_files SET source_file_id=NULL WHERE source_file_id=old.id;
|
|
END;
|
|
|
|
COMMIT;
|