use runifold_core::{Checkpoint, CheckpointId, CheckpointStore};
use super::{
ConversationAppend, ConversationContextPolicy, ConversationId, ConversationStore,
ConversationStoreError, ConversationStoreFuture, ConversationVersion, MemoryNamespace,
};
#[derive(Clone, Debug)]
pub struct DurableConversationRequest {
pub checkpoint_id: CheckpointId,
pub conversation_id: ConversationId,
pub namespace: MemoryNamespace,
pub policy: ConversationContextPolicy,
}
#[derive(Clone, Debug)]
pub struct DurableConversationCommit {
pub namespace: MemoryNamespace,
pub append: ConversationAppend,
pub checkpoint: Checkpoint,
pub expected_checkpoint_revision: u64,
}
pub trait DurableConversationStore: ConversationStore + CheckpointStore {
fn commit_durable_turn(
&self,
command: DurableConversationCommit,
) -> ConversationStoreFuture<'_, Result<ConversationVersion, ConversationStoreError>>;
}