MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / put_edge_raw

Method put_edge_raw

nodedb/src/engine/graph/edge_store/scan.rs:115–149  ·  view source on GitHub ↗

Insert a raw edge record (for snapshot restore). Takes the tenant + versioned composite key + raw value bytes (payload or sentinel). The composite key must already include the `{system_from:020}` suffix. Reverse-index mirror is maintained with the same suffix.

(
        &self,
        tid: TenantId,
        composite_key: &str,
        value: &[u8],
    )

Source from the content-addressed store, hash-verified

113 /// The composite key must already include the `{system_from:020}` suffix.
114 /// Reverse-index mirror is maintained with the same suffix.
115 pub fn put_edge_raw(
116 &self,
117 tid: TenantId,
118 composite_key: &str,
119 value: &[u8],
120 ) -> crate::Result<()> {
121 let t = tid.as_u64();
122 let (collection, src, label, dst, sys) = parse_versioned_edge_key(composite_key)
123 .ok_or_else(|| crate::Error::BadRequest {
124 detail: format!("put_edge_raw: malformed versioned key {composite_key:?}"),
125 })?;
126 let rev_key = versioned_edge_key(collection, dst, label, src, sys)?;
127 let rev_value: &[u8] = if is_sentinel(value) { value } else { &[] };
128
129 let write_txn = self
130 .db
131 .begin_write()
132 .map_err(|e| redb_err("begin_write", e))?;
133 {
134 let mut edges = write_txn
135 .open_table(EDGES)
136 .map_err(|e| redb_err("open edges", e))?;
137 edges
138 .insert((t, composite_key), value)
139 .map_err(|e| redb_err("insert edge", e))?;
140 let mut rev_t = write_txn
141 .open_table(REVERSE_EDGES)
142 .map_err(|e| redb_err("open reverse", e))?;
143 rev_t
144 .insert((t, rev_key.as_str()), rev_value)
145 .map_err(|e| redb_err("insert reverse", e))?;
146 }
147 write_txn.commit().map_err(|e| redb_err("commit edge", e))?;
148 Ok(())
149 }
150
151 /// Get an edge's current-state properties. `None` if no live version.
152 pub fn get_edge(

Calls 9

parse_versioned_edge_keyFunction · 0.85
versioned_edge_keyFunction · 0.85
is_sentinelFunction · 0.85
begin_writeMethod · 0.80
redb_errFunction · 0.70
as_u64Method · 0.45
insertMethod · 0.45
as_strMethod · 0.45
commitMethod · 0.45