timothy
64decd492e
fix(496): give music videos a per-library server identity; itemId diff + soft trash
...
Music videos carried no server identity, so JellyfinMusicVideoLibraryScanner had to
reconcile by a (LibraryPathId, path) diff and HARD-delete the remainder. A file served
by two libraries with overlapping local paths is a single row owned by whichever library
scanned it first, so that owner's sweep destroyed a row another library still served —
taking collection membership and playout references with it, irreversibly.
This is #494 's deferred "option 2":
- New JellyfinMusicVideo : MusicVideo (ItemId/Etag), mirroring JellyfinMovie — TPT table,
varchar(36), ItemId index. Dual-provider migration Add_JellyfinMusicVideo.
- New IMediaServerMusicVideoRepository + JellyfinMusicVideoRepository: itemId-keyed
existing-set/lookup and Flag{Normal,Unavailable,FileNotFound} seams, all scoped per
library via LibraryPath.LibraryId.
- New MediaServerMusicVideoLibraryScanner base; JellyfinMusicVideoLibraryScanner folds
onto it and keeps the #177/#488/#497/#500 metadata-reconcile logic verbatim.
- The sweep now soft-trashes (FileNotFound) instead of deleting, so removal is reversible
and EmptyTrash-governed. DeleteEmptyArtists consequently no longer fires from a sweep.
- Pre-identity rows are ADOPTED in place: the identity row is inserted against the same
MediaItem id, scoped to the scanned library's own LibraryPath, so collection membership
survives and a local/second-library row is never hijacked.
- AddMusicVideo normalizes Path/PathHash to the path-REPLACED local path; the projection
fills them from the server-reported path, which would break every later PathHash lookup.
Docs: scan.musicvideo-reconciliation relocated to docs/decisions/archive/scan.md as
superseded; new active record scan.musicvideo-server-identity.
fixes #496
2026-07-25 17:20:53 +02:00
..
2023-09-03 08:52:00 -05:00
2023-08-12 21:44:14 -05:00
2023-08-12 21:44:14 -05:00
2023-08-14 15:21:42 -05:00
2023-08-12 21:44:14 -05:00
2023-08-19 11:26:52 -05:00
2023-08-19 11:26:52 -05:00
2023-09-21 02:46:43 -05:00
2023-09-21 02:46:43 -05:00
2023-09-21 02:46:43 -05:00
2023-09-21 02:46:43 -05:00
2023-09-21 02:46:43 -05:00
2023-09-21 02:46:43 -05:00
2023-09-29 09:47:57 -05:00
2023-09-29 09:47:57 -05:00
2023-11-14 10:41:21 -06:00
2023-11-14 10:41:21 -06:00
2023-11-30 20:31:37 -06:00
2023-11-30 20:31:37 -06:00
2024-01-02 10:18:49 -06:00
2024-01-02 10:18:49 -06:00
2024-01-05 10:32:04 -06:00
2024-01-05 10:32:04 -06:00
2024-01-09 05:26:57 -06:00
2024-01-09 05:26:57 -06:00
2024-01-13 22:01:21 -06:00
2024-01-13 22:01:21 -06:00
2024-01-16 05:40:29 -06:00
2024-01-14 06:16:53 -06:00
2024-01-14 06:16:53 -06:00
2024-01-14 06:16:53 -06:00
2024-01-14 06:16:53 -06:00
2024-01-14 06:16:53 -06:00
2024-01-16 12:53:56 -06:00
2024-01-16 12:53:56 -06:00
2024-01-22 10:10:22 -06:00
2024-01-22 10:10:22 -06:00
2024-01-23 22:42:28 -06:00
2024-01-23 22:42:28 -06:00
2024-01-24 15:29:19 -06:00
2024-01-24 15:29:19 -06:00
2024-01-25 19:56:14 -06:00
2024-01-25 19:56:14 -06:00
2024-02-09 11:27:44 -06:00
2024-02-09 11:27:44 -06:00
2024-04-22 22:40:53 -05:00
2024-02-09 11:27:44 -06:00
2024-04-22 22:40:53 -05:00
2024-02-09 13:38:54 -06:00
2024-04-22 22:40:53 -05:00
2024-02-10 06:44:27 -06:00
2024-02-10 20:59:29 -06:00
2024-02-10 20:59:29 -06:00
2024-02-10 20:59:29 -06:00
2024-02-10 20:59:29 -06:00
2024-02-11 11:24:19 -06:00
2024-02-11 11:24:19 -06:00
2024-02-11 11:24:19 -06:00
2024-02-11 11:24:19 -06:00
2024-02-16 06:16:19 -06:00
2024-02-16 06:16:19 -06:00
2024-04-22 22:40:53 -05:00
2024-02-16 06:16:19 -06:00
2024-02-16 20:01:40 -06:00
2024-02-16 20:01:40 -06:00
2024-02-16 20:01:40 -06:00
2024-02-16 20:01:40 -06:00
2024-03-18 11:09:27 -05:00
2024-03-18 11:09:27 -05:00
2024-03-18 11:09:27 -05:00
2024-03-18 11:09:27 -05:00
2024-04-03 10:50:43 -05:00
2024-04-03 10:50:43 -05:00
2024-04-03 13:43:20 -05:00
2024-04-03 13:43:20 -05:00
2024-04-04 14:38:56 -05:00
2024-04-04 14:38:56 -05:00
2024-04-04 14:38:56 -05:00
2024-04-04 14:38:56 -05:00
2024-04-05 23:11:14 -05:00
2024-04-05 23:11:14 -05:00
2024-04-22 22:03:18 -05:00
2024-04-22 22:03:18 -05:00
2024-04-23 14:26:30 -05:00
2024-04-23 14:26:30 -05:00
2024-04-27 19:58:40 -05:00
2024-04-27 19:58:40 -05:00
2024-04-27 19:58:40 -05:00
2024-04-27 19:58:40 -05:00
2024-04-28 13:00:22 -05:00
2024-04-28 13:00:22 -05:00
2024-05-24 08:50:11 -05:00
2024-05-24 08:50:11 -05:00
2024-07-02 15:41:09 -05:00
2024-07-02 15:41:09 -05:00
2024-07-16 12:21:52 -05:00
2024-07-16 12:21:52 -05:00
2024-07-16 12:21:52 -05:00
2024-07-16 12:21:52 -05:00
2024-07-19 13:29:42 -05:00
2024-07-19 13:29:42 -05:00
2024-07-19 13:29:42 -05:00
2024-07-19 13:29:42 -05:00
2024-07-22 14:14:02 -05:00
2024-07-22 14:14:02 -05:00
2024-07-26 08:34:18 -05:00
2024-07-26 08:34:18 -05:00
2024-07-29 13:09:14 -05:00
2024-07-29 13:09:14 -05:00
2024-08-05 13:40:24 -05:00
2024-08-05 13:40:24 -05:00
2024-11-20 15:57:00 -06:00
2024-11-20 15:57:00 -06:00
2024-11-25 13:14:21 -06:00
2024-11-25 13:14:21 -06:00
2025-05-30 09:30:09 +00:00
2025-05-30 09:30:09 +00:00
2025-05-30 09:30:09 +00:00
2025-05-30 09:30:09 +00:00
2025-06-15 00:38:37 +00:00
2025-06-15 00:38:37 +00:00
2025-06-27 03:00:59 +00:00
2025-06-27 03:00:59 +00:00
2025-06-27 03:00:59 +00:00
2025-06-27 03:00:59 +00:00
2025-06-27 03:00:59 +00:00
2025-06-27 03:00:59 +00:00
2025-06-27 21:19:26 +00:00
2025-06-27 21:19:26 +00:00
2025-06-28 12:49:26 +00:00
2025-06-28 12:49:26 +00:00
2025-06-28 12:49:26 +00:00
2025-06-28 12:49:26 +00:00
2025-06-30 19:05:09 +00:00
2025-06-30 19:05:09 +00:00
2025-06-30 19:05:09 +00:00
2025-06-30 19:05:09 +00:00
2025-07-01 13:40:30 +00:00
2025-07-01 13:40:30 +00:00
2025-07-01 13:40:30 +00:00
2025-07-01 13:40:30 +00:00
2025-07-12 01:23:16 +00:00
2025-07-12 01:23:16 +00:00
2025-07-12 03:55:18 +00:00
2025-07-12 03:55:18 +00:00
2025-07-18 14:03:56 +00:00
2025-07-18 14:03:56 +00:00
2025-07-18 21:28:32 +00:00
2025-07-18 21:28:32 +00:00
2025-07-19 14:19:07 +00:00
2025-07-19 14:19:07 +00:00
2025-07-19 14:19:07 +00:00
2025-07-19 14:19:07 +00:00
2025-07-19 14:19:07 +00:00
2025-07-19 14:19:07 +00:00
2025-07-19 16:56:25 +00:00
2025-07-19 16:56:25 +00:00
2025-07-19 16:56:25 +00:00
2025-07-19 16:56:25 +00:00
2025-07-20 16:10:32 +00:00
2025-07-20 16:10:32 +00:00
2025-07-20 16:10:32 +00:00
2025-07-20 16:10:32 +00:00
2025-07-20 16:10:32 +00:00
2025-07-20 16:10:32 +00:00
2025-07-21 13:19:51 +00:00
2025-07-21 13:19:51 +00:00
2025-07-26 17:48:03 +00:00
2025-07-26 17:48:03 +00:00
2025-07-26 17:48:03 +00:00
2025-07-26 17:48:03 +00:00
2025-08-01 15:20:10 +00:00
2025-08-01 15:20:10 +00:00
2025-08-01 19:13:18 +00:00
2025-08-01 19:13:18 +00:00
2025-08-04 00:18:14 +00:00
2025-08-04 00:18:14 +00:00
2025-08-04 19:27:22 +00:00
2025-08-04 19:27:22 +00:00
2025-08-04 20:25:31 +00:00
2025-08-04 20:25:31 +00:00
2025-08-04 21:24:26 +00:00
2025-08-04 21:24:26 +00:00
2025-08-04 21:24:26 +00:00
2025-08-04 21:24:26 +00:00
2025-08-06 18:26:44 +00:00
2025-08-06 18:26:44 +00:00
2025-08-06 21:22:20 +00:00
2025-08-06 21:22:20 +00:00
2025-08-06 21:22:20 +00:00
2025-08-06 21:22:20 +00:00
2025-08-06 21:22:20 +00:00
2025-08-06 21:22:20 +00:00
2025-08-08 00:43:00 +00:00
2025-08-08 00:43:00 +00:00
2025-08-08 19:18:15 +00:00
2025-08-08 19:18:15 +00:00
2025-08-08 23:02:13 +00:00
2025-08-08 23:02:13 +00:00
2025-08-09 13:53:37 +00:00
2025-08-09 13:53:37 +00:00
2025-08-09 13:53:37 +00:00
2025-08-09 13:53:37 +00:00
2025-08-09 13:53:37 +00:00
2025-08-09 13:53:37 +00:00
2025-08-09 17:00:12 +00:00
2025-08-09 17:00:12 +00:00
2025-08-09 17:00:12 +00:00
2025-08-09 17:00:12 +00:00
2025-08-09 17:00:12 +00:00
2025-08-09 17:00:12 +00:00
2025-08-12 11:14:24 +00:00
2025-08-12 11:14:24 +00:00
2025-08-26 00:40:19 +00:00
2025-08-14 01:37:21 +00:00
2025-08-23 14:27:32 +00:00
2025-08-23 14:27:32 +00:00
2025-08-23 20:16:12 +00:00
2025-08-23 20:16:12 +00:00
2025-08-23 20:16:12 +00:00
2025-08-23 20:16:12 +00:00
2025-09-13 03:42:54 +00:00
2025-08-25 16:09:20 +00:00
2025-09-05 11:53:29 +00:00
2025-09-05 11:53:29 +00:00
2025-09-07 16:00:27 +00:00
2025-09-07 16:00:27 +00:00
2025-09-09 15:38:07 +00:00
2025-09-09 15:38:07 +00:00
2025-09-09 15:38:07 +00:00
2025-09-09 15:38:07 +00:00
2025-09-12 14:19:05 +00:00
2025-09-12 14:19:05 +00:00
2025-09-13 00:30:34 +00:00
2025-09-13 00:30:34 +00:00
2025-09-13 15:02:48 +00:00
2025-09-13 15:02:48 +00:00
2025-09-15 18:27:55 +00:00
2025-09-15 18:27:55 +00:00
2025-09-15 18:27:55 +00:00
2025-09-15 18:27:55 +00:00
2025-09-15 18:27:55 +00:00
2025-09-15 18:27:55 +00:00
2025-09-16 02:39:25 +00:00
2025-09-16 02:39:25 +00:00
2025-09-16 14:44:22 +00:00
2025-09-16 14:44:22 +00:00
2025-09-18 11:36:24 +00:00
2025-09-18 11:36:24 +00:00
2025-09-19 18:48:51 +00:00
2025-09-19 18:48:51 +00:00
2025-10-01 21:40:39 -05:00
2025-10-01 21:40:39 -05:00
2025-10-18 10:54:30 -05:00
2025-10-18 10:54:30 -05:00
2025-11-04 12:22:41 -06:00
2025-11-04 12:22:41 -06:00
2025-11-06 06:11:57 -06:00
2025-11-06 06:11:57 -06:00
2025-11-08 08:26:00 -06:00
2025-11-08 08:26:00 -06:00
2025-11-10 06:39:04 -06:00
2025-11-10 06:39:04 -06:00
2025-11-10 08:39:44 -06:00
2025-11-10 08:39:44 -06:00
2025-11-10 09:14:40 -06:00
2025-11-10 09:14:40 -06:00
2025-11-13 10:48:04 -06:00
2025-11-13 10:48:04 -06:00
2025-12-01 12:48:03 -06:00
2025-12-01 12:48:03 -06:00
2025-12-03 19:23:59 -06:00
2025-12-03 19:23:59 -06:00
2025-12-17 22:40:03 -06:00
2025-12-13 14:59:06 -06:00
2025-12-13 14:59:06 -06:00
2025-12-13 14:59:06 -06:00
2025-12-17 22:40:03 -06:00
2025-12-13 18:32:02 -06:00
2025-12-19 14:46:17 -06:00
2025-12-19 14:46:17 -06:00
2025-12-24 22:29:57 -06:00
2025-12-24 22:29:57 -06:00
2025-12-30 08:51:06 -06:00
2025-12-30 08:51:06 -06:00
2025-12-31 14:30:53 -06:00
2025-12-31 14:30:53 -06:00
2026-01-06 12:51:07 -06:00
2026-01-06 12:51:07 -06:00
2026-01-02 09:25:23 -06:00
2026-01-02 09:25:23 -06:00
2026-01-02 09:25:23 -06:00
2026-01-02 09:25:23 -06:00
2026-01-07 16:46:17 -06:00
2026-01-07 16:46:17 -06:00
2026-01-15 09:39:45 -06:00
2026-01-15 09:39:45 -06:00
2026-01-20 09:50:45 -06:00
2026-01-20 09:50:45 -06:00
2026-01-26 23:43:56 -06:00
2026-01-26 23:43:56 -06:00
2026-02-05 13:45:05 -06:00
2026-02-05 13:45:05 -06:00
2026-02-14 19:57:35 -06:00
2026-02-14 19:57:35 -06:00
2026-07-06 18:43:39 +02:00
2026-07-06 18:43:39 +02:00
2026-07-11 16:51:59 +02:00
2026-07-11 16:51:59 +02:00
2026-07-17 17:00:46 +00:00
2026-07-17 17:00:46 +00:00
2026-07-18 03:52:06 +02:00
2026-07-18 03:52:06 +02:00
2026-07-18 19:39:25 +00:00
2026-07-18 19:39:25 +00:00
2026-07-20 21:53:16 +02:00
2026-07-20 21:53:16 +02:00
2026-07-22 22:11:46 +02:00
2026-07-22 22:11:46 +02:00
2026-07-23 08:18:15 +02:00
2026-07-23 08:18:15 +02:00
2026-07-23 18:12:25 +00:00
2026-07-23 18:12:25 +00:00
2026-07-25 17:20:53 +02:00
2026-07-25 17:20:53 +02:00
2026-07-25 17:20:53 +02:00