-- #411 R3 bugfix: the five discovery mixes (deep_cuts, rediscover, -- new_for_you, on_this_day, first_listens) were added as producers + -- registry entries but their system_variant values were never added -- to the two playlists CHECK constraints. Result: insertSystemPlaylist -- for any new mix fails with playlists_kind_variant_consistent -- (SQLSTATE 23514), which — because BuildSystemPlaylists is one -- all-or-nothing transaction — aborts the WHOLE build, so For-You / -- Discover refresh 500s and the lazy daily build fails too. -- -- 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) );