Autotag: detect "junk drawer" folders with no artist/album consensus and split them into synthetic per-cluster groups instead of forcing one match on an unrelated pile of tracks; repair tagging_items rows left behind by a prior scan orphan-cleanup gap. Explore: fix an exact artist-name search being drowned out by its own catalog entries in intent-prior scoring, and prune stale in_library bookkeeping left behind when a referenced library row is deleted. Download: fix a multi-library regression where every import failed with "no library root configured" — the importer resolved the library root from a legacy single-library config field that nothing populates in the current multi-library model. It now resolves the destination library per-request from the request's own library_id. Also widen the Soulseek search window (12s -> 20s), measured against real request history to be missing available peers on live queries. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y2Agd9af5hE7qzti2ackiS
48 lines
1.3 KiB
SQL
48 lines
1.3 KiB
SQL
-- name: CreateRecording :one
|
|
INSERT INTO recordings (name, artist_credit_id) VALUES (?, ?)
|
|
RETURNING *;
|
|
|
|
-- name: CreateRecordingFull :one
|
|
INSERT INTO recordings (
|
|
name, artist_credit_id, track_number, disc_number,
|
|
year, genre, composer, lyrics, comment
|
|
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
RETURNING *;
|
|
|
|
-- name: GetRecording :one
|
|
SELECT * FROM recordings
|
|
WHERE id = ? LIMIT 1;
|
|
|
|
-- name: UpdateRecording :exec
|
|
UPDATE recordings
|
|
SET name = ?, artist_credit_id = ?
|
|
WHERE id = ?;
|
|
|
|
-- name: UpdateRecordingFull :exec
|
|
UPDATE recordings
|
|
SET name = ?, artist_credit_id = ?, track_number = ?, disc_number = ?,
|
|
year = ?, genre = ?, composer = ?, lyrics = ?, comment = ?
|
|
WHERE id = ?;
|
|
|
|
-- name: DeleteRecording :exec
|
|
DELETE FROM recordings
|
|
WHERE id = ?;
|
|
|
|
-- name: DeleteAllRecordings :exec
|
|
DELETE FROM recordings;
|
|
|
|
-- name: GetAllRecordings :many
|
|
SELECT * FROM recordings
|
|
ORDER BY name;
|
|
|
|
-- name: CountRecordingsByArtistCredit :one
|
|
SELECT COUNT(*) FROM recordings WHERE artist_credit_id = ?;
|
|
|
|
-- name: GetOrphanedRecordingIDs :many
|
|
-- Recordings no longer backed by any audio_files row - left behind
|
|
-- when a scan's orphan cleanup deletes the file that used to own them,
|
|
-- since deleting audio_files doesn't cascade to recordings.
|
|
SELECT r.id FROM recordings r
|
|
LEFT JOIN audio_files af ON af.recording_id = r.id
|
|
WHERE af.id IS NULL;
|