bvandeusen and Claude Opus 4.7
0fa7dc7982
feat(server): scanner + DeleteTrackFile write library_changes
...
Wires sync.LogChange into the library mutation sites so /api/library/sync
reflects upserts and deletes.
Architectural pivot: LogChange's signature is now (ctx, dbq.DBTX, ...) so
it works with both *pgxpool.Pool and pgx.Tx. The scanner doesn't run
mutations in explicit transactions, so it pool-binds; delete.go matches.
Tx-bound callers (likes/playlists in subsequent commits) keep atomicity.
Also: sync.FormatUUID centralizes the pgtype.UUID → canonical string
conversion that both the scanner and the sync handler need; library_sync.go
now uses it instead of a local copy.
Best-effort logging on scanner failures (Warn, don't fail the scan): a
LogChange error after a successful upsert is rare and self-healing — the
next scan that touches the entity re-emits the change.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-09 22:39:58 -04:00
..
2026-05-06 13:08:45 -04:00
2026-05-07 20:10:18 -04:00
2026-05-06 10:08:58 -04:00
2026-05-07 20:10:18 -04:00
2026-05-07 07:59:40 -04:00
2026-05-07 20:10:18 -04:00
2026-05-06 13:55:35 -04:00
2026-05-07 20:10:18 -04:00
2026-05-07 12:01:16 -04:00
2026-05-08 10:46:43 -04:00
2026-05-08 23:07:47 -04:00
2026-05-08 23:07:15 -04:00
2026-05-08 10:40:03 -04:00
2026-04-30 20:19:39 -04:00
2026-05-08 10:40:03 -04:00
2026-05-02 13:04:38 -04:00
2026-05-06 22:59:23 -04:00
2026-05-07 20:10:18 -04:00
2026-05-04 20:13:31 -04:00
2026-05-07 20:10:18 -04:00
2026-05-07 12:43:44 -04:00
2026-05-08 10:18:35 -04:00
2026-05-08 10:40:03 -04:00
2026-05-08 10:46:43 -04:00
2026-05-07 12:17:14 -04:00
2026-05-08 08:17:35 -04:00
2026-05-09 22:36:46 -04:00
2026-05-07 12:49:30 -04:00
2026-05-07 21:33:14 -04:00
2026-05-07 11:56:19 -04:00
2026-05-07 21:33:14 -04:00
2026-05-07 12:49:30 -04:00
2026-05-07 21:33:14 -04:00
2026-05-08 10:40:03 -04:00
2026-05-07 20:25:26 -04:00
2026-04-21 23:02:20 -04:00
2026-05-04 17:41:16 -04:00
2026-05-07 19:48:25 -04:00
2026-05-07 19:48:25 -04:00
2026-05-08 11:29:36 -04:00
2026-05-08 08:44:50 -04:00
2026-05-01 17:58:59 -04:00
2026-05-08 08:43:36 -04:00
2026-05-01 18:00:59 -04:00
2026-05-07 20:48:20 -04:00
2026-04-28 09:27:06 -04:00
2026-05-09 22:39:58 -04:00
2026-05-09 22:39:58 -04:00
2026-05-07 18:05:30 -04:00
2026-05-08 08:43:36 -04:00
2026-04-29 17:35:45 -04:00
2026-05-07 21:19:35 -04:00
2026-05-08 10:40:03 -04:00
2026-05-08 12:05:35 -04:00
2026-04-28 09:27:06 -04:00
2026-05-08 08:26:43 -04:00
2026-05-04 07:05:49 -04:00
2026-05-08 08:44:50 -04:00
2026-05-07 12:38:48 -04:00
2026-05-08 08:44:50 -04:00
2026-05-07 12:38:48 -04:00
2026-05-08 08:44:50 -04:00
2026-05-04 18:13:13 -04:00
2026-05-08 08:44:50 -04:00
2026-05-08 11:29:36 -04:00
2026-05-07 12:38:48 -04:00
2026-05-08 08:26:43 -04:00
2026-05-07 20:25:26 -04:00
2026-05-04 15:21:24 -04:00
2026-05-08 08:15:19 -04:00
2026-05-07 08:39:26 -04:00
2026-05-08 10:18:35 -04:00
2026-05-07 10:37:12 -04:00
2026-05-08 10:18:35 -04:00
2026-05-08 10:40:03 -04:00
2026-05-08 10:46:43 -04:00
2026-05-08 08:17:35 -04:00
2026-04-30 20:19:39 -04:00
2026-05-08 08:26:43 -04:00
2026-05-08 11:05:25 -04:00
2026-05-08 08:43:36 -04:00
2026-05-08 12:05:35 -04:00
2026-05-08 08:26:43 -04:00
2026-05-07 22:18:40 -04:00
2026-05-07 21:28:20 -04:00
2026-04-21 08:29:28 -04:00
2026-05-08 10:46:43 -04:00
2026-05-01 06:23:08 -04:00
2026-05-08 08:43:36 -04:00
2026-05-04 17:41:16 -04:00