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>
16 lines
845 B
SQL
16 lines
845 B
SQL
-- 0076_track_song_link.up.sql — the same song on several releases counts as
|
|
-- one song.
|
|
--
|
|
-- A single and the album it came from each hold the song, and Lidarr keeps
|
|
-- both: each fulfils its own release. Minstrel keeps both files and links
|
|
-- them, so a like on one is a like on the song, and a mix or radio picks the
|
|
-- song once rather than once per release.
|
|
--
|
|
-- song_id is set only on a linked track, to the song_key the link chose.
|
|
-- song_key is what everything reads: the track's own id until it is linked.
|
|
-- No foreign key: the track whose id names a song may itself be merged away
|
|
-- later, and the key still groups the copies left.
|
|
ALTER TABLE tracks ADD COLUMN song_id uuid;
|
|
ALTER TABLE tracks ADD COLUMN song_key uuid GENERATED ALWAYS AS (COALESCE(song_id, id)) STORED;
|
|
CREATE INDEX tracks_song_key_idx ON tracks (song_key);
|