diff --git a/CHANGELOG.md b/CHANGELOG.md index f36bc1b..ecd2f3b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ All schema changes will be documented in this file. +## 27-1-26 + +- Media management tables now support multiple named configurations + - Removed singleton constraints (`CHECK (id = 1)`) from naming and media settings tables + - Added `name` as primary key to: `radarr_naming`, `sonarr_naming`, `radarr_media_settings`, `sonarr_media_settings` + - Added `name` to composite primary key for: `radarr_quality_definitions`, `sonarr_quality_definitions` + - Allows storing multiple independent configs per table (e.g., different naming schemes, different quality size limits) + ## 21-1-26 - Removed `delay_profile_tags` table - tags not needed for syncing since only the diff --git a/ops/0.schema.sql b/ops/0.schema.sql index 4c464e0..7f9f757 100644 --- a/ops/0.schema.sql +++ b/ops/0.schema.sql @@ -326,32 +326,36 @@ CREATE TABLE custom_format_tests ( -- ============================================================================ -- Radarr quality size definitions --- Uses stable key: quality_name +-- Uses stable key: (name, quality_name) CREATE TABLE radarr_quality_definitions ( - quality_name VARCHAR(100) PRIMARY KEY, + name VARCHAR(100) NOT NULL, + quality_name VARCHAR(100) NOT NULL, min_size INTEGER NOT NULL DEFAULT 0, max_size INTEGER NOT NULL, preferred_size INTEGER NOT NULL, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (name, quality_name), FOREIGN KEY (quality_name) REFERENCES qualities(name) ON DELETE CASCADE ON UPDATE CASCADE ); -- Sonarr quality size definitions --- Uses stable key: quality_name +-- Uses stable key: (name, quality_name) CREATE TABLE sonarr_quality_definitions ( - quality_name VARCHAR(100) PRIMARY KEY, + name VARCHAR(100) NOT NULL, + quality_name VARCHAR(100) NOT NULL, min_size INTEGER NOT NULL DEFAULT 0, max_size INTEGER NOT NULL, preferred_size INTEGER NOT NULL, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (name, quality_name), FOREIGN KEY (quality_name) REFERENCES qualities(name) ON DELETE CASCADE ON UPDATE CASCADE ); -- Radarr naming configuration CREATE TABLE radarr_naming ( - id INTEGER PRIMARY KEY CHECK (id = 1), + name VARCHAR(100) PRIMARY KEY, rename INTEGER NOT NULL DEFAULT 1, movie_format TEXT NOT NULL, movie_folder_format TEXT NOT NULL, @@ -363,7 +367,7 @@ CREATE TABLE radarr_naming ( -- Sonarr naming configuration CREATE TABLE sonarr_naming ( - id INTEGER PRIMARY KEY CHECK (id = 1), + name VARCHAR(100) PRIMARY KEY, rename INTEGER NOT NULL DEFAULT 1, standard_episode_format TEXT NOT NULL, daily_episode_format TEXT NOT NULL, @@ -380,7 +384,7 @@ CREATE TABLE sonarr_naming ( -- Radarr general media settings CREATE TABLE radarr_media_settings ( - id INTEGER PRIMARY KEY CHECK (id = 1), + name VARCHAR(100) PRIMARY KEY, propers_repacks VARCHAR(50) NOT NULL DEFAULT 'doNotPrefer', enable_media_info INTEGER NOT NULL DEFAULT 1, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, @@ -389,7 +393,7 @@ CREATE TABLE radarr_media_settings ( -- Sonarr general media settings CREATE TABLE sonarr_media_settings ( - id INTEGER PRIMARY KEY CHECK (id = 1), + name VARCHAR(100) PRIMARY KEY, propers_repacks VARCHAR(50) NOT NULL DEFAULT 'doNotPrefer', enable_media_info INTEGER NOT NULL DEFAULT 1, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,