feat: implement RSS subscriptions, downloader routing and local media checks

This commit is contained in:
junior
2026-10-17 22:49:11 +08:00
parent 645ea6fe2d
commit 68c972dadd
28 changed files with 9226 additions and 43 deletions
+34
View File
@@ -0,0 +1,34 @@
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);