134 lines
3.8 KiB
SQL
134 lines
3.8 KiB
SQL
PRAGMA foreign_keys = ON;
|
|
|
|
CREATE TABLE settings_schema (
|
|
key TEXT PRIMARY KEY,
|
|
category TEXT NOT NULL,
|
|
label TEXT NOT NULL,
|
|
type TEXT NOT NULL,
|
|
required INTEGER NOT NULL DEFAULT 0,
|
|
description TEXT,
|
|
default_value TEXT,
|
|
options_json TEXT,
|
|
validation_json TEXT,
|
|
order_index INTEGER NOT NULL DEFAULT 0,
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE settings_values (
|
|
key TEXT PRIMARY KEY,
|
|
value TEXT,
|
|
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (key) REFERENCES settings_schema(key) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE jobs (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
title TEXT,
|
|
year INTEGER,
|
|
imdb_id TEXT,
|
|
poster_url TEXT,
|
|
omdb_json TEXT,
|
|
selected_from_omdb INTEGER DEFAULT 0,
|
|
start_time TEXT,
|
|
end_time TEXT,
|
|
status TEXT NOT NULL,
|
|
output_path TEXT,
|
|
disc_device TEXT,
|
|
error_message TEXT,
|
|
detected_title TEXT,
|
|
last_state TEXT,
|
|
raw_path TEXT,
|
|
rip_successful INTEGER NOT NULL DEFAULT 0,
|
|
makemkv_info_json TEXT,
|
|
handbrake_info_json TEXT,
|
|
mediainfo_info_json TEXT,
|
|
encode_plan_json TEXT,
|
|
encode_input_path TEXT,
|
|
encode_review_confirmed INTEGER DEFAULT 0,
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE INDEX idx_jobs_status ON jobs(status);
|
|
CREATE INDEX idx_jobs_created_at ON jobs(created_at DESC);
|
|
|
|
CREATE TABLE scripts (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL UNIQUE,
|
|
script_body TEXT NOT NULL,
|
|
order_index INTEGER NOT NULL DEFAULT 0,
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE INDEX idx_scripts_name ON scripts(name);
|
|
CREATE INDEX idx_scripts_order_index ON scripts(order_index, id);
|
|
|
|
CREATE TABLE script_chains (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL UNIQUE,
|
|
order_index INTEGER NOT NULL DEFAULT 0,
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE INDEX idx_script_chains_name ON script_chains(name);
|
|
CREATE INDEX idx_script_chains_order_index ON script_chains(order_index, id);
|
|
|
|
CREATE TABLE script_chain_steps (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
chain_id INTEGER NOT NULL,
|
|
position INTEGER NOT NULL,
|
|
step_type TEXT NOT NULL,
|
|
script_id INTEGER,
|
|
wait_seconds INTEGER,
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (chain_id) REFERENCES script_chains(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (script_id) REFERENCES scripts(id) ON DELETE SET NULL
|
|
);
|
|
|
|
CREATE INDEX idx_script_chain_steps_chain ON script_chain_steps(chain_id, position);
|
|
|
|
CREATE TABLE pipeline_state (
|
|
id INTEGER PRIMARY KEY CHECK (id = 1),
|
|
state TEXT NOT NULL,
|
|
active_job_id INTEGER,
|
|
progress REAL DEFAULT 0,
|
|
eta TEXT,
|
|
status_text TEXT,
|
|
context_json TEXT,
|
|
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (active_job_id) REFERENCES jobs(id)
|
|
);
|
|
|
|
CREATE TABLE cron_jobs (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL,
|
|
cron_expression TEXT NOT NULL,
|
|
source_type TEXT NOT NULL,
|
|
source_id INTEGER NOT NULL,
|
|
enabled INTEGER NOT NULL DEFAULT 1,
|
|
pushover_enabled INTEGER NOT NULL DEFAULT 1,
|
|
last_run_at TEXT,
|
|
last_run_status TEXT,
|
|
next_run_at TEXT,
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE INDEX idx_cron_jobs_enabled ON cron_jobs(enabled);
|
|
|
|
CREATE TABLE cron_run_logs (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
cron_job_id INTEGER NOT NULL,
|
|
started_at TEXT NOT NULL,
|
|
finished_at TEXT,
|
|
status TEXT NOT NULL,
|
|
output TEXT,
|
|
error_message TEXT,
|
|
FOREIGN KEY (cron_job_id) REFERENCES cron_jobs(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE INDEX idx_cron_run_logs_job ON cron_run_logs(cron_job_id, id DESC);
|