-- 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)
    );
