feat: enhance media management tables to support multiple configurations with composite primary keys

This commit is contained in:
Sam Chau
2026-01-27 00:20:51 +10:30
parent eb8e125415
commit 26f1400fa4
2 changed files with 20 additions and 8 deletions
+8
View File
@@ -2,6 +2,14 @@
All schema changes will be documented in this file. 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 ## 21-1-26
- Removed `delay_profile_tags` table - tags not needed for syncing since only the - Removed `delay_profile_tags` table - tags not needed for syncing since only the
+12 -8
View File
@@ -326,32 +326,36 @@ CREATE TABLE custom_format_tests (
-- ============================================================================ -- ============================================================================
-- Radarr quality size definitions -- Radarr quality size definitions
-- Uses stable key: quality_name -- Uses stable key: (name, quality_name)
CREATE TABLE radarr_quality_definitions ( 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, min_size INTEGER NOT NULL DEFAULT 0,
max_size INTEGER NOT NULL, max_size INTEGER NOT NULL,
preferred_size INTEGER NOT NULL, preferred_size INTEGER NOT NULL,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_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 FOREIGN KEY (quality_name) REFERENCES qualities(name) ON DELETE CASCADE ON UPDATE CASCADE
); );
-- Sonarr quality size definitions -- Sonarr quality size definitions
-- Uses stable key: quality_name -- Uses stable key: (name, quality_name)
CREATE TABLE sonarr_quality_definitions ( 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, min_size INTEGER NOT NULL DEFAULT 0,
max_size INTEGER NOT NULL, max_size INTEGER NOT NULL,
preferred_size INTEGER NOT NULL, preferred_size INTEGER NOT NULL,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_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 FOREIGN KEY (quality_name) REFERENCES qualities(name) ON DELETE CASCADE ON UPDATE CASCADE
); );
-- Radarr naming configuration -- Radarr naming configuration
CREATE TABLE radarr_naming ( CREATE TABLE radarr_naming (
id INTEGER PRIMARY KEY CHECK (id = 1), name VARCHAR(100) PRIMARY KEY,
rename INTEGER NOT NULL DEFAULT 1, rename INTEGER NOT NULL DEFAULT 1,
movie_format TEXT NOT NULL, movie_format TEXT NOT NULL,
movie_folder_format TEXT NOT NULL, movie_folder_format TEXT NOT NULL,
@@ -363,7 +367,7 @@ CREATE TABLE radarr_naming (
-- Sonarr naming configuration -- Sonarr naming configuration
CREATE TABLE sonarr_naming ( CREATE TABLE sonarr_naming (
id INTEGER PRIMARY KEY CHECK (id = 1), name VARCHAR(100) PRIMARY KEY,
rename INTEGER NOT NULL DEFAULT 1, rename INTEGER NOT NULL DEFAULT 1,
standard_episode_format TEXT NOT NULL, standard_episode_format TEXT NOT NULL,
daily_episode_format TEXT NOT NULL, daily_episode_format TEXT NOT NULL,
@@ -380,7 +384,7 @@ CREATE TABLE sonarr_naming (
-- Radarr general media settings -- Radarr general media settings
CREATE TABLE radarr_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', propers_repacks VARCHAR(50) NOT NULL DEFAULT 'doNotPrefer',
enable_media_info INTEGER NOT NULL DEFAULT 1, enable_media_info INTEGER NOT NULL DEFAULT 1,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
@@ -389,7 +393,7 @@ CREATE TABLE radarr_media_settings (
-- Sonarr general media settings -- Sonarr general media settings
CREATE TABLE sonarr_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', propers_repacks VARCHAR(50) NOT NULL DEFAULT 'doNotPrefer',
enable_media_info INTEGER NOT NULL DEFAULT 1, enable_media_info INTEGER NOT NULL DEFAULT 1,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,