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

Method load_session_turns_for_write

atomic-core/src/pristine/txn/write/mod.rs:310–337  ·  view source on GitHub ↗
(
        &self,
        session_id: &str,
    )

Source from the content-addressed store, hash-verified

308 }
309
310 fn load_session_turns_for_write(
311 &self,
312 session_id: &str,
313 ) -> PristineResult<Vec<crate::change::session::SessionTurn>> {
314 use crate::change::session::{
315 encode_session_turn_key, session_turn_namespace, SessionTurn,
316 };
317
318 let turns = self.txn.open_table(SESSION_TURNS)?;
319 let namespace = session_turn_namespace(session_id);
320 let scan_start = encode_session_turn_key(namespace, 0);
321 let scan_end = encode_session_turn_key(namespace, u32::MAX);
322 let mut result = Vec::new();
323
324 for row in turns.range::<&[u8; 40]>(&scan_start..=&scan_end)? {
325 let (_key, value) = row?;
326 let turn = SessionTurn::from_bytes(value.value()).map_err(|e| {
327 PristineError::Serialization {
328 message: format!("session turn decode: {}", e),
329 }
330 })?;
331 if turn.session_id == session_id {
332 result.push(turn);
333 }
334 }
335 result.sort_by_key(|turn| turn.turn_number);
336 Ok(result)
337 }
338
339 fn session_ledger_schema_key(session_id: &str) -> String {
340 format!(

Callers 4

rewrite_session_turnsMethod · 0.80
index_session_turnMethod · 0.80
index_inherited_turnMethod · 0.80

Calls 3

session_turn_namespaceFunction · 0.85
encode_session_turn_keyFunction · 0.85
pushMethod · 0.45

Tested by

no test coverage detected