error.rs (1448B)
1 #![forbid(unsafe_code)] 2 3 use thiserror::Error; 4 5 #[derive(Debug, Error)] 6 pub enum RadrootsOutboxError { 7 #[error("SQLx error: {0}")] 8 Sqlx(#[from] sqlx::Error), 9 10 #[error("JSON error: {0}")] 11 Json(#[from] serde_json::Error), 12 13 #[error("Event store error: {0}")] 14 EventStore(#[from] radroots_event_store::RadrootsEventStoreError), 15 16 #[error("Signed event does not match frozen draft: {0}")] 17 SignedEventDraftMismatch(#[from] radroots_events::draft::RadrootsDraftError), 18 19 #[error("target relays cannot be empty")] 20 EmptyTargetRelays, 21 22 #[error("Invalid stored enum for {field}: {value}")] 23 InvalidStoredEnum { field: &'static str, value: String }, 24 25 #[error("Idempotency conflict for {operation_kind}/{expected_pubkey}/{idempotency_key}")] 26 IdempotencyConflict { 27 operation_kind: String, 28 expected_pubkey: String, 29 idempotency_key: String, 30 existing_digest: String, 31 new_digest: String, 32 }, 33 34 #[error("Outbox event not found: {0}")] 35 EventNotFound(i64), 36 37 #[error("Claim token mismatch for outbox event {outbox_event_id}")] 38 ClaimTokenMismatch { outbox_event_id: i64 }, 39 40 #[error("Signed event missing for outbox event {0}")] 41 MissingSignedEvent(i64), 42 43 #[error("Signed event ID mismatch: expected {expected_event_id}, got {actual_event_id}")] 44 SignedEventIdMismatch { 45 expected_event_id: String, 46 actual_event_id: String, 47 }, 48 }