diff --git a/internal/database/migrations/postgres/022_add_arr_types.sql b/internal/database/migrations/postgres/022_add_arr_types.sql index ab14673f..84b45009 100644 --- a/internal/database/migrations/postgres/022_add_arr_types.sql +++ b/internal/database/migrations/postgres/022_add_arr_types.sql @@ -1,5 +1,10 @@ +-- +goose Up -- Migration 022: Update media_files instance_type check constraint for Postgres -- Postgres allows dropping and adding constraints ALTER TABLE media_files DROP CONSTRAINT IF EXISTS media_files_instance_type_check; ALTER TABLE media_files ADD CONSTRAINT media_files_instance_type_check CHECK (instance_type IN ('radarr', 'sonarr', 'lidarr', 'readarr', 'whisparr')); + +-- +goose Down +ALTER TABLE media_files DROP CONSTRAINT IF EXISTS media_files_instance_type_check; +ALTER TABLE media_files ADD CONSTRAINT media_files_instance_type_check CHECK (instance_type IN ('radarr', 'sonarr')); diff --git a/internal/database/migrations/sqlite/022_add_arr_types.sql b/internal/database/migrations/sqlite/022_add_arr_types.sql index a485d927..9ec9b23f 100644 --- a/internal/database/migrations/sqlite/022_add_arr_types.sql +++ b/internal/database/migrations/sqlite/022_add_arr_types.sql @@ -1,3 +1,4 @@ +-- +goose Up -- Migration 022: Update media_files instance_type check constraint -- SQLite does not support ALTER TABLE for constraints, so we have to recreate the table @@ -21,3 +22,25 @@ ALTER TABLE media_files_new RENAME TO media_files; CREATE INDEX idx_media_files_file_path ON media_files(file_path); CREATE INDEX idx_media_files_instance ON media_files(instance_name, instance_type); CREATE INDEX idx_media_files_external ON media_files(instance_name, instance_type, external_id); + +-- +goose Down +CREATE TABLE media_files_old ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + instance_name TEXT NOT NULL, + instance_type TEXT NOT NULL CHECK(instance_type IN ('radarr', 'sonarr')), + external_id INTEGER NOT NULL, + file_path TEXT NOT NULL, + file_size INTEGER, + created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +INSERT INTO media_files_old SELECT * FROM media_files WHERE instance_type IN ('radarr', 'sonarr'); + +DROP TABLE media_files; + +ALTER TABLE media_files_old RENAME TO media_files; + +CREATE INDEX idx_media_files_file_path ON media_files(file_path); +CREATE INDEX idx_media_files_instance ON media_files(instance_name, instance_type); +CREATE INDEX idx_media_files_external ON media_files(instance_name, instance_type, external_id);