Files
tapehoard/backend/app/db/schema.sql
T
adamlamers 0bfd5affb4
Continuous Integration / backend-tests (push) Successful in 11m41s
Continuous Integration / frontend-check (push) Successful in 10m54s
tests & remove is_indexed flag from db
2026-04-28 23:55:39 -04:00

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;