1use crate::error::OutboxError;
2use crate::model::OutboxSlot;
3use crate::object::{EventType, Payload};
4use crate::storage::OutboxWriter;
5
6mod object;
7mod storage;
8mod error;
9mod config;
10mod model;
11mod processor;
12mod publisher;
13mod gc;
14mod manager;
15
16pub async fn add_event<W: OutboxWriter>(
17 writer: W,
18 event_type: &str,
19 payload: serde_json::Value,
20) -> Result<(), OutboxError> {
21 let event = OutboxSlot::new(EventType::new(event_type), Payload::new(payload));
22 writer.insert_event(event).await
23}
24
25pub mod prelude {
26 pub use crate::storage::{OutboxStorage, OutboxWriter};
27 pub use crate::publisher::EventPublisher;
28
29 pub use crate::processor::OutboxProcessor;
30 pub use crate::manager::OutboxManager;
31 pub use crate::config::OutboxConfig;
32
33 pub use crate::model::{OutboxSlot, SlotStatus};
34 pub use crate::object::{SlotId, EventType, Payload};
35
36 pub use crate::error::OutboxError;
37
38 pub use crate::add_event;
39}