linkrs_storage/engine/graph_storage/
writer_api.rs1use linkrs_core::types::{InsertEdgeInfo, InsertVertexInfo, UpdateInfo, VertexId};
2use linkrs_core::{Edge, EdgeDeleteKey, StorageError, Vertex};
3
4use crate::StorageWriter;
5
6use super::writer;
7use super::GraphStorage;
8
9impl StorageWriter for GraphStorage {
10 fn insert_vertex(&mut self, space: &str, vertex: Vertex) -> Result<VertexId, StorageError> {
11 self.ctx.check_write_admission()?;
12 let result = writer::insert_vertex(&self.ctx, space, vertex)?;
13 self.commit_auto_if_needed()?;
14 Ok(result)
15 }
16
17 fn update_vertex(&mut self, space: &str, vertex: Vertex) -> Result<(), StorageError> {
18 self.ctx.check_write_admission()?;
19 writer::update_vertex(&self.ctx, space, vertex)?;
20 self.commit_auto_if_needed()
21 }
22
23 fn update_vertex_replace(&mut self, space: &str, vertex: Vertex) -> Result<(), StorageError> {
24 self.ctx.check_write_admission()?;
25 writer::update_vertex_replace(&self.ctx, space, vertex)?;
26 self.commit_auto_if_needed()
27 }
28
29 fn delete_vertex(&mut self, space: &str, tag: &str, id: &VertexId) -> Result<(), StorageError> {
30 self.ctx.check_write_admission()?;
31 writer::delete_vertex(&self.ctx, space, tag, id)?;
32 self.commit_auto_if_needed()
33 }
34
35 fn delete_vertex_with_edges(
36 &mut self,
37 space: &str,
38 tag: &str,
39 id: &VertexId,
40 ) -> Result<(), StorageError> {
41 self.ctx.check_write_admission()?;
42 writer::delete_vertex_with_edges(&self.ctx, space, tag, id)?;
43 self.commit_auto_if_needed()
44 }
45
46 fn batch_delete_vertices_with_edges(
47 &mut self,
48 space: &str,
49 tag: &str,
50 ids: &[VertexId],
51 ) -> Result<usize, StorageError> {
52 self.ctx.check_write_admission()?;
53 let result = writer::batch_delete_vertices_with_edges(&self.ctx, space, tag, ids)?;
54 self.commit_auto_if_needed()?;
55 Ok(result)
56 }
57
58 fn batch_insert_vertices(
59 &mut self,
60 space: &str,
61 vertices: Vec<Vertex>,
62 ) -> Result<Vec<VertexId>, StorageError> {
63 self.ctx.check_write_admission()?;
64 let result = writer::batch_insert_vertices(&self.ctx, space, vertices)?;
65 self.commit_auto_if_needed()?;
66 Ok(result)
67 }
68
69 fn batch_insert_vertices_with_split(
70 &mut self,
71 space: &str,
72 vertices: Vec<Vertex>,
73 auto_split: bool,
74 ) -> Result<Vec<VertexId>, StorageError> {
75 self.ctx.check_write_admission()?;
76 let result =
77 writer::batch_insert_vertices_with_split(&self.ctx, space, vertices, auto_split)?;
78 self.commit_auto_if_needed()?;
79 Ok(result)
80 }
81
82 fn insert_edge(&mut self, space: &str, edge: Edge) -> Result<(), StorageError> {
83 self.ctx.check_write_admission()?;
84 writer::insert_edge(&self.ctx, space, edge)?;
85 self.commit_auto_if_needed()
86 }
87
88 fn update_edge(&mut self, space: &str, edge: Edge) -> Result<(), StorageError> {
89 self.ctx.check_write_admission()?;
90 writer::update_edge(&self.ctx, space, edge)?;
91 self.commit_auto_if_needed()
92 }
93
94 fn update_edge_replace(&mut self, space: &str, edge: Edge) -> Result<(), StorageError> {
95 self.ctx.check_write_admission()?;
96 writer::update_edge_replace(&self.ctx, space, edge)?;
97 self.commit_auto_if_needed()
98 }
99
100 fn delete_edge(
101 &mut self,
102 space: &str,
103 src: &VertexId,
104 dst: &VertexId,
105 edge_type: &str,
106 rank: i64,
107 ) -> Result<(), StorageError> {
108 self.ctx.check_write_admission()?;
109 writer::delete_edge(&self.ctx, space, src, dst, edge_type, rank)?;
110 self.commit_auto_if_needed()
111 }
112
113 fn batch_insert_edges(&mut self, space: &str, edges: Vec<Edge>) -> Result<(), StorageError> {
114 self.ctx.check_write_admission()?;
115 writer::batch_insert_edges(&self.ctx, space, edges)?;
116 self.commit_auto_if_needed()
117 }
118
119 fn batch_delete_edges(
120 &mut self,
121 space: &str,
122 deletes: &[EdgeDeleteKey],
123 ) -> Result<usize, StorageError> {
124 self.ctx.check_write_admission()?;
125 let result = writer::batch_delete_edges(&self.ctx, space, deletes)?;
126 self.commit_auto_if_needed()?;
127 Ok(result)
128 }
129
130 fn insert_vertex_data(
131 &mut self,
132 space: &str,
133 info: &InsertVertexInfo,
134 ) -> Result<bool, StorageError> {
135 self.ctx.check_write_admission()?;
136 let result = writer::insert_vertex_data(&self.ctx, space, info)?;
137 self.commit_auto_if_needed()?;
138 Ok(result)
139 }
140
141 fn insert_edge_data(
142 &mut self,
143 space: &str,
144 info: &InsertEdgeInfo,
145 ) -> Result<bool, StorageError> {
146 self.ctx.check_write_admission()?;
147 let result = writer::insert_edge_data(&self.ctx, space, info)?;
148 self.commit_auto_if_needed()?;
149 Ok(result)
150 }
151
152 fn delete_vertex_data(
153 &mut self,
154 space: &str,
155 tag: &str,
156 vertex_id: &str,
157 ) -> Result<bool, StorageError> {
158 self.ctx.check_write_admission()?;
159 let result = writer::delete_vertex_data(&self.ctx, space, tag, vertex_id)?;
160 self.commit_auto_if_needed()?;
161 Ok(result)
162 }
163
164 fn delete_edge_data(
165 &mut self,
166 space: &str,
167 src: &str,
168 dst: &str,
169 rank: i64,
170 ) -> Result<bool, StorageError> {
171 self.ctx.check_write_admission()?;
172 let result = writer::delete_edge_data(&self.ctx, space, src, dst, rank)?;
173 self.commit_auto_if_needed()?;
174 Ok(result)
175 }
176
177 fn update_data(
178 &mut self,
179 space: &str,
180 space_id: u64,
181 info: &UpdateInfo,
182 ) -> Result<bool, StorageError> {
183 self.ctx.check_write_admission()?;
184 let result = writer::update_data(&self.ctx, space, space_id, info)?;
185 self.commit_auto_if_needed()?;
186 Ok(result)
187 }
188}