release / govulncheck (push) Successful in 17s
release / web (push) Successful in 1m33s
release / go (push) Successful in 1m49s
release / integration (push) Successful in 5m42s
release / android (push) Successful in 5m59s
release / Build signed APK (releases and dev) (push) Successful in 6m9s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Successful in 16s
release / Verify release artifacts (tag releases only) (push) Skipped
Applies rule 32's migration exception: each header still says what the schema was, what changes and what it prevents, but task, milestone, decision and rule ids are replaced by the practice they stood for, the operator quotes by the decision, single-install counts are dropped, and pointers to a deleted package and an external design doc are gone. golang-migrate keeps no checksum, so editing applied migrations' comments is safe. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
46 lines
2.0 KiB
SQL
46 lines
2.0 KiB
SQL
-- 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)
|
|
);
|