38 lines
1.6 KiB
SQL
38 lines
1.6 KiB
SQL
CREATE TABLE media_destinations (
|
|
id TEXT PRIMARY KEY,
|
|
name TEXT NOT NULL,
|
|
kind TEXT NOT NULL CHECK (kind = 'local'),
|
|
root_path TEXT NOT NULL
|
|
);
|
|
CREATE TABLE destination_selection (
|
|
singleton INTEGER PRIMARY KEY CHECK (singleton = 1),
|
|
destination_id TEXT REFERENCES media_destinations(id)
|
|
);
|
|
INSERT INTO destination_selection(singleton) VALUES (1);
|
|
CREATE TABLE destination_mappings (
|
|
id TEXT PRIMARY KEY,
|
|
destination_id TEXT NOT NULL REFERENCES media_destinations(id),
|
|
downloader_id TEXT NOT NULL REFERENCES downloader_instances(id),
|
|
version INTEGER NOT NULL,
|
|
download_root TEXT NOT NULL,
|
|
UNIQUE(destination_id, downloader_id, version)
|
|
);
|
|
ALTER TABLE download_jobs ADD COLUMN destination_id TEXT REFERENCES media_destinations(id);
|
|
ALTER TABLE download_jobs ADD COLUMN mapping_id TEXT REFERENCES destination_mappings(id);
|
|
ALTER TABLE download_jobs ADD COLUMN download_save_path TEXT;
|
|
ALTER TABLE download_jobs ADD COLUMN file_status TEXT NOT NULL DEFAULT 'unchecked'
|
|
CHECK (file_status IN ('unchecked', 'present', 'absent', 'unavailable'));
|
|
ALTER TABLE download_jobs ADD COLUMN file_checked_at INTEGER;
|
|
ALTER TABLE download_jobs ADD COLUMN file_last_success_at INTEGER;
|
|
ALTER TABLE download_jobs ADD COLUMN file_error TEXT;
|
|
CREATE TABLE media_files (
|
|
job_id TEXT NOT NULL REFERENCES download_jobs(id),
|
|
relative_path TEXT NOT NULL,
|
|
expected_size INTEGER NOT NULL,
|
|
observed_size INTEGER,
|
|
status TEXT NOT NULL DEFAULT 'unchecked'
|
|
CHECK (status IN ('unchecked', 'present', 'absent', 'unavailable')),
|
|
error TEXT,
|
|
PRIMARY KEY(job_id, relative_path)
|
|
);
|