rust_mcp_transport/
event_store.rs

1mod in_memory_event_store;
2use async_trait::async_trait;
3pub use in_memory_event_store::*;
4
5use crate::{EventId, SessionId, StreamId};
6
7#[derive(Debug, Clone)]
8pub struct EventStoreMessages {
9    pub session_id: SessionId,
10    pub stream_id: StreamId,
11    pub messages: Vec<String>,
12}
13
14#[async_trait]
15pub trait EventStore: Send + Sync {
16    async fn store_event(
17        &self,
18        session_id: SessionId,
19        stream_id: StreamId,
20        time_stamp: u128,
21        message: String,
22    ) -> EventId;
23    async fn remove_by_session_id(&self, session_id: SessionId);
24    async fn remove_stream_in_session(&self, session_id: SessionId, stream_id: StreamId);
25    async fn clear(&self);
26    async fn events_after(&self, last_event_id: EventId) -> Option<EventStoreMessages>;
27}