upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/src/purgatory/sync/mod.rs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2026-01-07 11:40:41 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2026-01-07 11:40:41 +0000
commit5bd6b9b93cd52da2075bc00a08cf7feca4b85d5c (patch)
treebc36818ed88458f33f3f94c33685c9f02c0969f4 /src/purgatory/sync/mod.rs
parent09d9771acaffdc6e798cc32d2a68e6d46a323d3a (diff)
Add SyncContext trait and MockSyncContext for purgatory sync
Implement the abstraction layer for purgatory sync operations: - SyncContext trait: defines interface for repository data fetching, OID existence checks, git fetch operations, and event processing - ProcessResult: captures outcomes when releasing events from purgatory - MockSyncContext: test mock with builder pattern for configuring: - Clone URLs and which OIDs each URL provides - Needed OIDs (simulates purgatory state) - URL failure simulation - Fetch logging for assertions The trait uses async_trait for async method support and requires Send + Sync for use in concurrent sync operations. This abstraction enables unit testing of sync logic without I/O, while the real implementation (to be added later) will connect to actual database, git, and relay systems.
Diffstat (limited to 'src/purgatory/sync/mod.rs')
-rw-r--r--src/purgatory/sync/mod.rs5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/purgatory/sync/mod.rs b/src/purgatory/sync/mod.rs
index b29f10e..1ac0cb1 100644
--- a/src/purgatory/sync/mod.rs
+++ b/src/purgatory/sync/mod.rs
@@ -6,8 +6,13 @@
6//! - Exponential backoff per identifier (20s → 2m, then 2m intervals) 6//! - Exponential backoff per identifier (20s → 2m, then 2m intervals)
7//! - Debouncing for burst event arrivals 7//! - Debouncing for burst event arrivals
8 8
9mod context;
9mod queue; 10mod queue;
10mod throttle; 11mod throttle;
11 12
13pub use context::{ProcessResult, SyncContext};
12pub use queue::SyncQueueEntry; 14pub use queue::SyncQueueEntry;
13pub use throttle::{DomainThrottle, ThrottleManager}; 15pub use throttle::{DomainThrottle, ThrottleManager};
16
17#[cfg(test)]
18pub use context::mock::MockSyncContext;