-- Before: the five discovery mixes (deep_cuts, rediscover, new_for_you, -- on_this_day, first_listens) had producers and registry entries but no -- system_variant values in the two playlists CHECK constraints, so inserting -- any of them failed playlists_kind_variant_consistent (SQLSTATE 23514) — -- and because BuildSystemPlaylists is one all-or-nothing transaction, that -- aborts the WHOLE build. After: the constraints accept them. -- -- All five are seedless (like for_you/discover): seed_artist_id IS -- NULL. Drop + re-add both constraints with the expanded set, same -- pattern as 0021_discover_variant (Postgres has no ALTER CONSTRAINT -- for CHECK). ALTER TABLE playlists DROP CONSTRAINT IF EXISTS playlists_kind_variant_consistent; ALTER TABLE playlists ADD CONSTRAINT playlists_kind_variant_consistent CHECK ( (kind = 'user' AND system_variant IS NULL) OR (kind = 'system' AND system_variant IN ( 'for_you', 'songs_like_artist', 'discover', 'deep_cuts', 'rediscover', 'new_for_you', 'on_this_day', 'first_listens' )) ); ALTER TABLE playlists DROP CONSTRAINT IF EXISTS playlists_seed_consistent; ALTER TABLE playlists ADD CONSTRAINT playlists_seed_consistent CHECK ( (system_variant IS NULL AND seed_artist_id IS NULL) OR (system_variant = 'for_you' AND seed_artist_id IS NULL) OR (system_variant = 'discover' AND seed_artist_id IS NULL) OR (system_variant = 'deep_cuts' AND seed_artist_id IS NULL) OR (system_variant = 'rediscover' AND seed_artist_id IS NULL) OR (system_variant = 'new_for_you' AND seed_artist_id IS NULL) OR (system_variant = 'on_this_day' AND seed_artist_id IS NULL) OR (system_variant = 'first_listens' AND seed_artist_id IS NULL) OR (system_variant = 'songs_like_artist' AND seed_artist_id IS NOT NULL) );