4cec2b6 edited an already-applied migration to drop podnapisi from the
subtitle_settings default. sqlx checksums migrations, so every boot since
has failed with "migration 25 was previously applied but has been
modified" — the daemon exits 1, swarm keeps the old task, and three
commits never reached production.
0033 already strips podnapisi from existing rows, and it runs after 0025
seeds row 1, so a fresh database still ends up with opensubtitles alone.
The edit changed nothing except the checksum.
38 lines
2.2 KiB
SQL
38 lines
2.2 KiB
SQL
-- #198. The runtime-editable half of subtitle configuration (DESIGN.md §15,
|
|
-- §10). The other half — provider credentials, translator keys, the
|
|
-- remote-command template, the alass and ffmpeg binary paths — is
|
|
-- config/env only and never reaches this table.
|
|
--
|
|
-- One row: the wanted set, enabled providers and translation engine are
|
|
-- global, not per root (§15), so there is nothing to key this on.
|
|
|
|
CREATE TABLE subtitle_settings (
|
|
id INTEGER PRIMARY KEY CHECK (id = 1),
|
|
-- Language tags as `arr_core::Language` spells them, e.g. `pt-PT`, `en`.
|
|
wanted_languages TEXT NOT NULL DEFAULT '["pt-PT","en"]'
|
|
CHECK (json_valid(wanted_languages)),
|
|
-- Provider ids in search order (DESIGN.md §15's ranking runs per
|
|
-- provider before it runs per candidate). Absent from the array means
|
|
-- disabled.
|
|
providers_enabled TEXT NOT NULL DEFAULT '["opensubtitles","podnapisi"]'
|
|
CHECK (json_valid(providers_enabled)),
|
|
-- The compiled-in backend in use, or NULL when translation is off. Not
|
|
-- checked against the running binary's features here — the API does
|
|
-- that (#198) — so a rebuild with a different feature set never leaves
|
|
-- an unreadable row.
|
|
translation_engine TEXT
|
|
CHECK (translation_engine IN ('openai', 'deepl', 'google', 'command')),
|
|
-- Provider id / engine name -> a daily allowance (§15's token buckets,
|
|
-- #197). A missing key means no allowance configured yet, not zero.
|
|
provider_daily_budgets TEXT NOT NULL DEFAULT '{}' CHECK (json_valid(provider_daily_budgets)),
|
|
translator_daily_budgets TEXT NOT NULL DEFAULT '{}' CHECK (json_valid(translator_daily_budgets)),
|
|
-- Only the remote-command backend needs one of these: the HTTP backends
|
|
-- carry their own client timeout.
|
|
remote_command_timeout_seconds INTEGER NOT NULL DEFAULT 30
|
|
CHECK (remote_command_timeout_seconds > 0),
|
|
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
|
|
) STRICT;
|
|
|
|
INSERT INTO subtitle_settings (id) VALUES (1);
|