diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2026-01-07 11:40:41 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2026-01-07 11:40:41 +0000 |
| commit | 5bd6b9b93cd52da2075bc00a08cf7feca4b85d5c (patch) | |
| tree | bc36818ed88458f33f3f94c33685c9f02c0969f4 /src/purgatory/sync/mod.rs | |
| parent | 09d9771acaffdc6e798cc32d2a68e6d46a323d3a (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.rs | 5 |
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 | ||
| 9 | mod context; | ||
| 9 | mod queue; | 10 | mod queue; |
| 10 | mod throttle; | 11 | mod throttle; |
| 11 | 12 | ||
| 13 | pub use context::{ProcessResult, SyncContext}; | ||
| 12 | pub use queue::SyncQueueEntry; | 14 | pub use queue::SyncQueueEntry; |
| 13 | pub use throttle::{DomainThrottle, ThrottleManager}; | 15 | pub use throttle::{DomainThrottle, ThrottleManager}; |
| 16 | |||
| 17 | #[cfg(test)] | ||
| 18 | pub use context::mock::MockSyncContext; | ||