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

Method get_session_turns

atomic-core/src/pristine/txn/read.rs:632–658  ·  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

630
631 /// Read all indexed turns for an external session ID in turn order.
632 pub fn get_session_turns(
633 &self,
634 session_id: &str,
635 ) -> PristineResult<Vec<crate::change::session::SessionTurn>> {
636 use crate::change::session::{session_turn_namespace, SessionTurn};
637
638 let table = self.txn.open_table(SESSION_TURNS)?;
639 let namespace = session_turn_namespace(session_id);
640 let start = crate::change::session::encode_session_turn_key(namespace, 0);
641 let end = crate::change::session::encode_session_turn_key(namespace, u32::MAX);
642 let mut turns = Vec::new();
643
644 for result in table.range::<&[u8; 40]>(&start..=&end)? {
645 let (_key, value) = result?;
646 let turn = SessionTurn::from_bytes(value.value()).map_err(|e| {
647 PristineError::Serialization {
648 message: format!("session turn decode: {}", e),
649 }
650 })?;
651 if turn.session_id == session_id {
652 turns.push(turn);
653 }
654 }
655
656 turns.sort_by_key(|turn| turn.turn_number);
657 Ok(turns)
658 }
659
660 /// Load an immutable session manifest by content hash.
661 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