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

Method add_edge_with_reverse

atomic-core/src/apply/graph_batch.rs:106–127  ·  view source on GitHub ↗

Add a canonical bidirectional GRAPH edge pair (forward + PARENT reverse), mirroring both rows into INODE_GRAPH when an inode is provided.

(
        &mut self,
        inode: Option<Inode>,
        flag: EdgeFlags,
        source: GraphNode<NodeId>,
        dest: GraphNode<NodeId>,
        introduced_by: NodeId,
    )

Source from the content-addressed store, hash-verified

104 /// Add a canonical bidirectional GRAPH edge pair (forward + PARENT reverse),
105 /// mirroring both rows into INODE_GRAPH when an inode is provided.
106 pub fn add_edge_with_reverse(
107 &mut self,
108 inode: Option<Inode>,
109 flag: EdgeFlags,
110 source: GraphNode<NodeId>,
111 dest: GraphNode<NodeId>,
112 introduced_by: NodeId,
113 ) -> PristineResult<()> {
114 let forward_edge = SerializedGraphEdge::new(flag, dest.start_pos(), introduced_by);
115 let reverse_flag = flag | EdgeFlags::PARENT;
116 let reverse_edge = SerializedGraphEdge::new(reverse_flag, source.end_pos(), introduced_by);
117
118 self.put_graph(source, forward_edge)?;
119 self.put_graph(dest, reverse_edge)?;
120
121 if let Some(inode_val) = inode {
122 self.put_inode_graph(inode_val, source, forward_edge)?;
123 self.put_inode_graph(inode_val, dest, reverse_edge)?;
124 }
125
126 Ok(())
127 }
128
129 /// Add a canonical bidirectional GRAPH edge pair, but only the forward
130 /// adjacency row to INODE_GRAPH.

Callers 2

add_edge_with_reverseFunction · 0.80

Calls 4

start_posMethod · 0.45
end_posMethod · 0.45
put_graphMethod · 0.45
put_inode_graphMethod · 0.45

Tested by

no test coverage detected