feat: add episode availability cache and provider mapping tables
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
-- +goose Up
|
||||
CREATE TABLE IF NOT EXISTS episode_availability_cache (
|
||||
anime_id INTEGER PRIMARY KEY,
|
||||
data TEXT NOT NULL,
|
||||
next_refresh_at DATETIME,
|
||||
retry_until_at DATETIME,
|
||||
last_attempt_at DATETIME,
|
||||
last_success_at DATETIME,
|
||||
failure_count INTEGER NOT NULL DEFAULT 0,
|
||||
last_error TEXT NOT NULL DEFAULT '',
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS episode_provider_mapping (
|
||||
anime_id INTEGER NOT NULL,
|
||||
provider TEXT NOT NULL,
|
||||
provider_show_id TEXT NOT NULL,
|
||||
failed_until DATETIME,
|
||||
last_error TEXT NOT NULL DEFAULT '',
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (anime_id, provider)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_episode_availability_next_refresh
|
||||
ON episode_availability_cache(next_refresh_at);
|
||||
|
||||
-- +goose Down
|
||||
@@ -0,0 +1,79 @@
|
||||
-- +goose Up
|
||||
PRAGMA foreign_keys=OFF;
|
||||
|
||||
ALTER TABLE episode_availability_cache RENAME TO episode_availability_cache_old;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS episode_availability_cache (
|
||||
anime_id INTEGER PRIMARY KEY,
|
||||
data TEXT NOT NULL,
|
||||
next_refresh_at DATETIME,
|
||||
retry_until_at DATETIME,
|
||||
last_attempt_at DATETIME,
|
||||
last_success_at DATETIME,
|
||||
failure_count INTEGER NOT NULL DEFAULT 0,
|
||||
last_error TEXT NOT NULL DEFAULT '',
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
INSERT OR REPLACE INTO episode_availability_cache (
|
||||
anime_id,
|
||||
data,
|
||||
next_refresh_at,
|
||||
retry_until_at,
|
||||
last_attempt_at,
|
||||
last_success_at,
|
||||
failure_count,
|
||||
last_error,
|
||||
updated_at
|
||||
)
|
||||
SELECT
|
||||
anime_id,
|
||||
data,
|
||||
next_refresh_at,
|
||||
retry_until_at,
|
||||
last_attempt_at,
|
||||
last_success_at,
|
||||
failure_count,
|
||||
last_error,
|
||||
updated_at
|
||||
FROM episode_availability_cache_old;
|
||||
|
||||
DROP TABLE episode_availability_cache_old;
|
||||
|
||||
ALTER TABLE episode_provider_mapping RENAME TO episode_provider_mapping_old;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS episode_provider_mapping (
|
||||
anime_id INTEGER NOT NULL,
|
||||
provider TEXT NOT NULL,
|
||||
provider_show_id TEXT NOT NULL,
|
||||
failed_until DATETIME,
|
||||
last_error TEXT NOT NULL DEFAULT '',
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (anime_id, provider)
|
||||
);
|
||||
|
||||
INSERT OR REPLACE INTO episode_provider_mapping (
|
||||
anime_id,
|
||||
provider,
|
||||
provider_show_id,
|
||||
failed_until,
|
||||
last_error,
|
||||
updated_at
|
||||
)
|
||||
SELECT
|
||||
anime_id,
|
||||
provider,
|
||||
provider_show_id,
|
||||
failed_until,
|
||||
last_error,
|
||||
updated_at
|
||||
FROM episode_provider_mapping_old;
|
||||
|
||||
DROP TABLE episode_provider_mapping_old;
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_episode_availability_next_refresh
|
||||
ON episode_availability_cache(next_refresh_at);
|
||||
|
||||
PRAGMA foreign_keys=ON;
|
||||
|
||||
-- +goose Down
|
||||
Reference in New Issue
Block a user