94 lines
2.8 KiB
SQL
94 lines
2.8 KiB
SQL
CREATE TABLE filesystem_state (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
file_path TEXT UNIQUE,
|
|
size BIGINT,
|
|
mtime FLOAT,
|
|
sha256_hash TEXT,
|
|
is_ignored BOOLEAN DEFAULT 0,
|
|
last_seen_timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE storage_media (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
media_type TEXT,
|
|
identifier TEXT UNIQUE,
|
|
generation_tier TEXT,
|
|
capacity BIGINT,
|
|
bytes_used BIGINT DEFAULT 0,
|
|
location TEXT,
|
|
status TEXT DEFAULT 'active',
|
|
extra_config TEXT,
|
|
priority_index INTEGER DEFAULT 0,
|
|
last_seen DATETIME,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE file_versions (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
filesystem_state_id INTEGER,
|
|
media_id INTEGER,
|
|
file_number TEXT,
|
|
offset_in_tar INTEGER,
|
|
is_split BOOLEAN DEFAULT 0,
|
|
split_id TEXT,
|
|
offset_start BIGINT DEFAULT 0,
|
|
offset_end BIGINT DEFAULT 0,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY(filesystem_state_id) REFERENCES filesystem_state(id),
|
|
FOREIGN KEY(media_id) REFERENCES storage_media(id)
|
|
);
|
|
|
|
CREATE TABLE tracked_sources (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
path TEXT UNIQUE,
|
|
is_directory BOOLEAN DEFAULT 1,
|
|
action TEXT DEFAULT 'include',
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE restore_cart (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
filesystem_state_id INTEGER,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY(filesystem_state_id) REFERENCES filesystem_state(id)
|
|
);
|
|
|
|
CREATE TABLE jobs (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
job_type TEXT,
|
|
status TEXT DEFAULT 'PENDING',
|
|
progress FLOAT DEFAULT 0.0,
|
|
current_task TEXT,
|
|
error_message TEXT,
|
|
started_at DATETIME,
|
|
completed_at DATETIME,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE system_settings (
|
|
key TEXT PRIMARY KEY,
|
|
value TEXT,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- FTS5 Virtual Table for Instant Search
|
|
CREATE VIRTUAL TABLE filesystem_fts USING fts5(
|
|
file_path,
|
|
content='filesystem_state',
|
|
content_rowid='id'
|
|
);
|
|
|
|
-- Trigger to keep FTS5 synchronized with real state
|
|
CREATE TRIGGER filesystem_fts_insert AFTER INSERT ON filesystem_state BEGIN
|
|
INSERT INTO filesystem_fts(rowid, file_path) VALUES (new.id, new.file_path);
|
|
END;
|
|
|
|
CREATE TRIGGER filesystem_fts_delete AFTER DELETE ON filesystem_state BEGIN
|
|
INSERT INTO filesystem_fts(filesystem_fts, rowid, file_path) VALUES('delete', old.id, old.file_path);
|
|
END;
|
|
|
|
CREATE TRIGGER filesystem_fts_update AFTER UPDATE ON filesystem_state BEGIN
|
|
INSERT INTO filesystem_fts(filesystem_fts, rowid, file_path) VALUES('delete', old.id, old.file_path);
|
|
INSERT INTO filesystem_fts(rowid, file_path) VALUES (new.id, new.file_path);
|
|
END;
|