mirror of
https://relay.ngit.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp.git
synced 2026-10-06 15:38:25 +00:00
Add event dependency tracking and cascade deletion: - Query all events referencing deleted announcements (via 'a' tags) - Recursively find dependent events via 'e' tags (PRs, issues, patches, status) - Move deleted events to holding database with metadata - Simple cascade algorithm for single-maintainer repositories - Atomic database migration operations Cascade delete strategy: - Delete ALL dependent events when announcement is deleted - Matches user expectation of "delete everything" - Recovery available via holding database during retention period - Archival relays protect community work via disrespector mode Comprehensive event type support: - Patches (1617) - tag repos via 'a' - Issues (1621) - tag repos via 'a' - Issue status (1630) - tag issues via 'e' - Patch status (1632) - tag patches via 'e' - Repository status (1633) - tag repos via 'a' - PR events (1619, 1631) - tested in recovery tests with real git data Tests: 61 integration tests covering: - Disrespector mode behavior (6 tests) - Holding DB creation/absence based on config - Both memory and LMDB backends - Config environment variable parsing - Cascade deletion and holding DB migration (6 tests) - Dependent event discovery (a/e tags) - Metadata preservation - Nested dependencies - Short retention periods for testing - Deletion request validation (8 tests) - Valid deletions (e tags, a tags) - Rejection cases (no tags, author mismatch, invalid format) - Edge cases (nonexistent events, multiple deletions, mixed tags) - All NIP-34 event types (41 tests) - Patches cascade delete - Issues cascade delete - Issue status cascade delete - Patch status cascade delete - Repository status cascade delete - Mixed event types comprehensive scenario - PR events tested in recovery tests (require real git data)