diff --git a/CHANGELOG.md b/CHANGELOG.md index 5143365..325533e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,4 +54,10 @@ All schema changes will be documented in this file. - Add quality profile testing tables - test_entities: stores movies/series from TMDB for testing quality profiles - test_releases: stores sample releases attached to test entities - - Supports languages, indexers, and flags as JSON arrays for release metadata \ No newline at end of file + - Supports languages, indexers, and flags as JSON arrays for release metadata + +## 19-1-26 +- Fix test_releases FK stability issue + - Changed from test_entity_id (auto-generated) to composite FK (entity_type, entity_tmdb_id) + - Ensures releases remain correctly linked after database recompile from ops + - Updated index to use composite key \ No newline at end of file diff --git a/ops/0.schema.sql b/ops/0.schema.sql index 63bbe63..e44fce2 100644 --- a/ops/0.schema.sql +++ b/ops/0.schema.sql @@ -416,9 +416,11 @@ CREATE TABLE test_entities ( ); -- Test releases attached to entities +-- Uses composite FK (entity_type, entity_tmdb_id) for stable references across recompiles CREATE TABLE test_releases ( id INTEGER PRIMARY KEY AUTOINCREMENT, - test_entity_id INTEGER NOT NULL, + entity_type TEXT NOT NULL CHECK (entity_type IN ('movie', 'series')), + entity_tmdb_id INTEGER NOT NULL, title TEXT NOT NULL, size_bytes INTEGER, languages TEXT NOT NULL DEFAULT '[]', @@ -426,10 +428,10 @@ CREATE TABLE test_releases ( flags TEXT NOT NULL DEFAULT '[]', created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, - FOREIGN KEY (test_entity_id) REFERENCES test_entities(id) ON DELETE CASCADE + FOREIGN KEY (entity_type, entity_tmdb_id) REFERENCES test_entities(type, tmdb_id) ON DELETE CASCADE ); -CREATE INDEX idx_test_releases_entity ON test_releases(test_entity_id); +CREATE INDEX idx_test_releases_entity ON test_releases(entity_type, entity_tmdb_id); -- ============================================================================ -- INDEXES AND CONSTRAINTS