From e52e2a8568fcf95e2b4709cbb5f57a44e293c23a Mon Sep 17 00:00:00 2001 From: Sam Chau Date: Tue, 27 Jan 2026 23:08:07 +1030 Subject: [PATCH] feat: Added CHECK constraints for enum-like columns (enables type generation) --- CHANGELOG.md | 35 ++++++++++++++++++++--------------- ops/0.schema.sql | 9 ++++++--- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ecd2f3b..5b163fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,20 +2,6 @@ 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 - default profile (id=1) can be updated, which must have empty tags -- Only one delay profile syncs per arr instance; others are ignored - ## 31-10-25 - Hello, World! @@ -99,4 +85,23 @@ instead of an autoincrement id column. - **delay_profile_tags**: Uses (delay_profile_name, tag_name) - **quality_api_mappings**: Uses (quality_name, arr_type) - **custom_format_tests**: Uses custom_format_name -- **radarr_quality_definitions / sonarr_quality_definitions**: Uses quality_name as PK \ No newline at end of file +- **radarr_quality_definitions / sonarr_quality_definitions**: Uses quality_name as PK + +## 21-1-26 + +- Removed `delay_profile_tags` table - tags not needed for syncing since only the + default profile (id=1) can be updated, which must have empty tags +- Only one delay profile syncs per arr instance; others are ignored + +## 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) +- Added CHECK constraints for enum-like columns (enables type generation) + - `radarr_naming.colon_replacement_format`: delete, dash, spaceDash, spaceDashSpace, smart + - `radarr_media_settings.propers_repacks`: doNotPrefer, preferAndUpgrade, doNotUpgradeAutomatically + - `sonarr_media_settings.propers_repacks`: doNotPrefer, preferAndUpgrade, doNotUpgradeAutomatically + diff --git a/ops/0.schema.sql b/ops/0.schema.sql index 7f9f757..458f602 100644 --- a/ops/0.schema.sql +++ b/ops/0.schema.sql @@ -360,7 +360,8 @@ CREATE TABLE radarr_naming ( movie_format TEXT NOT NULL, movie_folder_format TEXT NOT NULL, replace_illegal_characters INTEGER NOT NULL DEFAULT 0, - colon_replacement_format VARCHAR(20) NOT NULL DEFAULT 'smart', + colon_replacement_format VARCHAR(20) NOT NULL DEFAULT 'smart' + CHECK (colon_replacement_format IN ('delete', 'dash', 'spaceDash', 'spaceDashSpace', 'smart')), created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP ); @@ -385,7 +386,8 @@ CREATE TABLE sonarr_naming ( -- Radarr general media settings CREATE TABLE radarr_media_settings ( name VARCHAR(100) PRIMARY KEY, - propers_repacks VARCHAR(50) NOT NULL DEFAULT 'doNotPrefer', + propers_repacks VARCHAR(50) NOT NULL DEFAULT 'doNotPrefer' + CHECK (propers_repacks IN ('doNotPrefer', 'preferAndUpgrade', 'doNotUpgradeAutomatically')), enable_media_info INTEGER NOT NULL DEFAULT 1, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP @@ -394,7 +396,8 @@ CREATE TABLE radarr_media_settings ( -- Sonarr general media settings CREATE TABLE sonarr_media_settings ( name VARCHAR(100) PRIMARY KEY, - propers_repacks VARCHAR(50) NOT NULL DEFAULT 'doNotPrefer', + propers_repacks VARCHAR(50) NOT NULL DEFAULT 'doNotPrefer' + CHECK (propers_repacks IN ('doNotPrefer', 'preferAndUpgrade', 'doNotUpgradeAutomatically')), enable_media_info INTEGER NOT NULL DEFAULT 1, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP