navidrome/persistence
Deluan 80e9921d45 fix(subsonic): return error 70 when scrobble contains invalid IDs
Implements OpenSubsonic API clarification from PR #202: the scrobble
endpoint now validates all media file IDs before processing and returns
error code 70 (data not found) if any ID is invalid. This ensures the
entire operation fails atomically - no scrobbles are submitted when any
ID in the batch is invalid, matching the OpenSubsonic specification.

Changes include updating MediaFileRepository.Exists() to accept variadic
IDs for efficient batch validation via a single COUNT query.

See: https://github.com/opensubsonic/open-subsonic-api/pull/202
Signed-off-by: Deluan <deluan@navidrome.org>
2026-02-04 18:08:02 -05:00
..
album_repository.go fix(db): Include items with no annotation for starred=false, handle has_rating=false (#4921) 2026-01-21 13:45:17 -05:00
album_repository_test.go fix(db): Include items with no annotation for starred=false, handle has_rating=false (#4921) 2026-01-21 13:45:17 -05:00
artist_repository.go fix(db): Include items with no annotation for starred=false, handle has_rating=false (#4921) 2026-01-21 13:45:17 -05:00
artist_repository_test.go fix(db): Include items with no annotation for starred=false, handle has_rating=false (#4921) 2026-01-21 13:45:17 -05:00
collation_test.go fix(ui): make playlist name sorting case-insensitive (#4845) 2026-01-05 19:05:11 -05:00
export_test.go feat(bfr): Big Refactor: new scanner, lots of new fields and tags, improvements and DB schema changes (#2709) 2025-02-19 20:35:17 -05:00
folder_repository.go fix(scanner): execute GetFolderUpdateInfo in batches to avoid "Expression tree is too large (maximum depth 1000)" 2025-12-16 11:37:13 -05:00
folder_repository_test.go feat(scanner): implement selective folder scanning and file system watcher improvements (#4674) 2025-11-14 22:15:43 -05:00
genre_repository.go fix(server): headless library access improvements (#4362) 2025-07-20 15:58:21 -04:00
genre_repository_test.go fix(server): headless library access improvements (#4362) 2025-07-20 15:58:21 -04:00
helpers.go fix(scanner): optimize refresh (#4059) 2025-05-14 20:47:03 -04:00
helpers_test.go feat(bfr): Big Refactor: new scanner, lots of new fields and tags, improvements and DB schema changes (#2709) 2025-02-19 20:35:17 -05:00
library_repository.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
library_repository_test.go feat(scanner): implement selective folder scanning and file system watcher improvements (#4674) 2025-11-14 22:15:43 -05:00
mediafile_repository.go fix(subsonic): return error 70 when scrobble contains invalid IDs 2026-02-04 18:08:02 -05:00
mediafile_repository_test.go fix(playlists): better M3U paths matching across different UTF representations (#4890) 2026-01-24 12:47:43 -05:00
persistence.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
persistence_suite_test.go feat(subsonic): Add avgRating from subsonic spec (#4900) 2026-01-18 17:42:42 -05:00
persistence_test.go fix(server): play queue should not return empty entries for deleted tracks 2024-09-20 11:22:37 -04:00
player_repository.go fix(insights): fix issues and improve reports (#3558) 2024-12-18 20:37:35 -05:00
player_repository_test.go revert: separation of write and read DBs 2024-11-19 18:41:50 -05:00
playlist_repository.go fix: apply library filter to smart playlist track generation (#4739) 2025-11-27 07:58:39 -05:00
playlist_repository_test.go test: use unique library name and path in tests 2025-11-28 16:11:13 -05:00
playlist_track_repository.go feat: add Rated At field - #4653 (#4660) 2025-11-24 23:18:05 -05:00
playqueue_repository.go fix(server): ensure single record per user by reusing existing playqueue ID 2025-06-11 17:26:13 -04:00
playqueue_repository_test.go fix(server): ensure single record per user by reusing existing playqueue ID 2025-06-11 17:26:13 -04:00
plugin_cleanup.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
plugin_cleanup_test.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
plugin_repository.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
plugin_repository_test.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
property_repository.go Replace beego/orm with dbx (#2693) 2023-12-09 13:52:17 -05:00
property_repository_test.go revert: separation of write and read DBs 2024-11-19 18:41:50 -05:00
radio_repository.go feat(bfr): Big Refactor: new scanner, lots of new fields and tags, improvements and DB schema changes (#2709) 2025-02-19 20:35:17 -05:00
radio_repository_test.go revert: separation of write and read DBs 2024-11-19 18:41:50 -05:00
scrobble_buffer_repository.go fix(server): headless library access improvements (#4362) 2025-07-20 15:58:21 -04:00
scrobble_buffer_repository_test.go feat(plugins): experimental support for plugins (#3998) 2025-06-22 20:45:38 -04:00
scrobble_repository.go feat(server): track scrobble/linstens history (#4770) 2025-12-06 11:07:18 -05:00
scrobble_repository_test.go feat(server): track scrobble/linstens history (#4770) 2025-12-06 11:07:18 -05:00
share_repository.go fix(server): headless library access improvements (#4362) 2025-07-20 15:58:21 -04:00
share_repository_test.go fix(server): headless library access improvements (#4362) 2025-07-20 15:58:21 -04:00
sql_annotations.go fix(db): Include items with no annotation for starred=false, handle has_rating=false (#4921) 2026-01-21 13:45:17 -05:00
sql_annotations_test.go fix(db): Include items with no annotation for starred=false, handle has_rating=false (#4921) 2026-01-21 13:45:17 -05:00
sql_base_repository.go fix(server): headless library access improvements (#4362) 2025-07-20 15:58:21 -04:00
sql_base_repository_test.go fix(server): headless library access improvements (#4362) 2025-07-20 15:58:21 -04:00
sql_bookmarks.go feat(scanner): improve error messages for cleanup operations in annotations, bookmarks, and tags 2025-11-20 09:27:42 -05:00
sql_bookmarks_test.go revert: separation of write and read DBs 2024-11-19 18:41:50 -05:00
sql_participations.go fix(scanner): remove stale role associations when artist role changes. Fix #4242 2025-12-16 06:38:50 -05:00
sql_restful.go feat: MBID search functionality for albums, artists and songs (#4286) 2025-06-30 17:11:54 -04:00
sql_restful_test.go feat: MBID search functionality for albums, artists and songs (#4286) 2025-06-30 17:11:54 -04:00
sql_search.go fix(server): optimize search3 performance with multi-library (#4382) 2025-07-25 18:53:40 -04:00
sql_search_test.go feat(bfr): Big Refactor: new scanner, lots of new fields and tags, improvements and DB schema changes (#2709) 2025-02-19 20:35:17 -05:00
sql_tags.go fix(server): headless library access improvements (#4362) 2025-07-20 15:58:21 -04:00
tag_library_filtering_test.go test: use unique library name and path in tests 2025-11-28 16:11:13 -05:00
tag_repository.go feat(scanner): improve error messages for cleanup operations in annotations, bookmarks, and tags 2025-11-20 09:27:42 -05:00
tag_repository_test.go fix(scanner): prevent foreign key constraint error in tag UpdateCounts (#4370) 2025-07-21 22:55:28 -04:00
transcoding_repository.go feat: Multi-library support (#4181) 2025-07-18 18:41:12 -04:00
transcoding_repository_test.go fix(transcoding): restrict transcoding operations to admin users (#4096) 2025-05-21 22:19:23 -04:00
user_props_repository.go Replace beego/orm with dbx (#2693) 2023-12-09 13:52:17 -05:00
user_repository.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
user_repository_test.go fix: qualify user id filter to avoid ambiguous column (#4511) 2025-11-06 14:54:01 -05:00