1
Fork 0
mirror of https://github.com/thegeneralist01/archivr synced 2026-07-21 18:55:36 +02:00
archivr/crates/archivr-core/src
TheGeneralist ed1f883ff1
feat: implement entry deletion
- database: cascade_cached_bytes_after_subtree_delete — one-pass set-aware
  SQL that excludes the entire subtree simultaneously, avoiding sibling-blob
  cross-counting bug
- database: delete_entry — collects subtree IDs, runs set-aware cascade,
  NULLs archive_run_items.produced_entry_id (FK blocker), deletes children
  then root; ON DELETE CASCADE handles artifacts/tags/collections
- server: DELETE /api/archives/:archive_id/entries/:entry_uid route,
  wrapped in a transaction for atomicity
- frontend: deleteEntry API call, handleEntryDeleted callback in App.jsx
  (optimistic list removal + selection clear), Delete entry button in
  ContextRail with confirm guard
- tests: 4 database tests (unknown uid, subtree removal, run_item nulling,
  cached_bytes recalculation) + 3 route tests (204+gone, 404, 401)
2026-07-04 13:46:19 +02:00
..
downloader fix: emit yt-dlp stderr on fetch_metadata failure for debuggability 2026-07-03 18:03:22 +02:00
archive.rs feat: precompute cached_bytes per entry in DB (#13) 2026-07-03 11:56:55 +02:00
capture.rs fix: restore yt-dlp metadata title fetch in perform_capture 2026-07-03 18:13:23 +02:00
database.rs feat: implement entry deletion 2026-07-04 13:46:19 +02:00
hash.rs feat(fonts): hash_bytes, get_blob_by_sha256, font_extractor module 2026-06-25 16:02:57 +02:00
lib.rs feat: browser capture button (Track 4) 2026-06-22 22:18:44 +02:00
twitter.rs feat: add db and multi-archive web UI foundation (#8) 2026-06-14 00:27:16 +02:00