35 lines
1.1 KiB
SQL
35 lines
1.1 KiB
SQL
CREATE TABLE subscriptions (
|
|
id TEXT PRIMARY KEY,
|
|
spec TEXT NOT NULL,
|
|
deleted INTEGER NOT NULL DEFAULT 0,
|
|
last_checked_at INTEGER,
|
|
last_error TEXT
|
|
);
|
|
|
|
CREATE TABLE releases (
|
|
subscription_id TEXT NOT NULL REFERENCES subscriptions(id),
|
|
resource_key TEXT NOT NULL,
|
|
payload TEXT NOT NULL,
|
|
PRIMARY KEY (subscription_id, resource_key)
|
|
);
|
|
|
|
CREATE TABLE download_jobs (
|
|
id TEXT PRIMARY KEY,
|
|
subscription_id TEXT NOT NULL REFERENCES subscriptions(id),
|
|
resource_key TEXT NOT NULL,
|
|
title TEXT NOT NULL,
|
|
season INTEGER NOT NULL,
|
|
episode INTEGER NOT NULL,
|
|
download_url TEXT NOT NULL,
|
|
torrent_bytes BLOB,
|
|
info_hash TEXT,
|
|
state TEXT NOT NULL DEFAULT 'queued'
|
|
CHECK (state IN ('queued', 'submitting', 'submitted', 'downloading', 'completed', 'missing', 'failed')),
|
|
attempts INTEGER NOT NULL DEFAULT 0,
|
|
last_error TEXT,
|
|
next_attempt_at INTEGER NOT NULL DEFAULT 0,
|
|
UNIQUE(subscription_id, resource_key),
|
|
UNIQUE(subscription_id, season, episode)
|
|
);
|
|
CREATE INDEX jobs_state ON download_jobs(state, next_attempt_at);
|