feat(db): cascade-cleanup queries for M7 #372 track removal
DeleteTrack returns album_id + artist_id so the calling service can chain the album-empty / artist-empty cascade. DeleteAlbumIfEmpty and DeleteArtistIfEmpty are no-ops when other rows still reference the parent — the service treats pgx.ErrNoRows as "not orphaned, skip".
This commit is contained in:
@@ -96,3 +96,12 @@ ORDER BY albums.release_date NULLS LAST, albums.sort_title,
|
||||
-- matched artist (sum across all the artist's albums) while a request
|
||||
-- is still in flight.
|
||||
SELECT COUNT(*) FROM tracks WHERE artist_id = $1;
|
||||
|
||||
-- name: DeleteTrack :one
|
||||
-- M7 #372: hard delete with FK cascade. The CASCADE on track_id from
|
||||
-- play_events / general_likes_tracks / lidarr_quarantine /
|
||||
-- lidarr_quarantine_actions handles their cleanup. RETURNING gives us
|
||||
-- album_id + artist_id for the album-empty / artist-empty cascade
|
||||
-- checks the service does next.
|
||||
DELETE FROM tracks WHERE id = $1
|
||||
RETURNING id, album_id, artist_id, file_path, mbid;
|
||||
|
||||
Reference in New Issue
Block a user