-- Adds 'discover' as an accepted system_variant alongside 'for_you' -- and 'songs_like_artist'. Discover has no seed_artist_id (like -- for_you), so the variant->seed coherence check is extended to -- accept (system_variant = 'discover' AND seed_artist_id IS NULL). -- -- Drops + re-adds both CHECK constraints; PostgreSQL doesn't have -- ALTER CONSTRAINT for CHECK so this is the standard pattern. 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')) ); 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 = 'songs_like_artist' AND seed_artist_id IS NOT NULL) );