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:309–336  ·  view source on GitHub ↗
(
        &self,
        session_id: &str,
    )

Source from the content-addressed store, hash-verified

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