MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / get_session_turns

Method get_session_turns

atomic-core/src/pristine/txn/read.rs:587–613  ·  view source on GitHub ↗

Read all indexed turns for an external session ID in turn order.

(
        &self,
        session_id: &str,
    )

Source from the content-addressed store, hash-verified

585
586 /// Read all indexed turns for an external session ID in turn order.
587 pub fn get_session_turns(
588 &self,
589 session_id: &str,
590 ) -> PristineResult<Vec<crate::change::session::SessionTurn>> {
591 use crate::change::session::{session_turn_namespace, SessionTurn};
592
593 let table = self.txn.open_table(SESSION_TURNS)?;
594 let namespace = session_turn_namespace(session_id);
595 let start = crate::change::session::encode_session_turn_key(namespace, 0);
596 let end = crate::change::session::encode_session_turn_key(namespace, u32::MAX);
597 let mut turns = Vec::new();
598
599 for result in table.range::<&[u8; 40]>(&start..=&end)? {
600 let (_key, value) = result?;
601 let turn = SessionTurn::from_bytes(value.value()).map_err(|e| {
602 PristineError::Serialization {
603 message: format!("session turn decode: {}", e),
604 }
605 })?;
606 if turn.session_id == session_id {
607 turns.push(turn);
608 }
609 }
610
611 turns.sort_by_key(|turn| turn.turn_number);
612 Ok(turns)
613 }
614
615 /// Load an immutable session manifest by content hash.
616 pub fn get_session_manifest(

Callers 3

rebuild_session_indexMethod · 0.80
get_session_ledgerMethod · 0.80
list_session_ledgersMethod · 0.80

Calls 3

session_turn_namespaceFunction · 0.85
encode_session_turn_keyFunction · 0.85
pushMethod · 0.45

Tested by

no test coverage detected