Skip to main content

linkrs_storage/engine/sync_wrapper/
undo.rs

1use super::SyncWrapper;
2use crate::StorageClient;
3use std::sync::Arc;
4
5impl<S: linkrs_transaction::UndoTarget + StorageClient> linkrs_transaction::UndoTarget
6    for SyncWrapper<S>
7{
8    fn delete_vertex_type(
9        &self,
10        label: linkrs_core::types::LabelId,
11    ) -> linkrs_transaction::undo_log::UndoLogResult<()> {
12        self.inner.delete_vertex_type(label)
13    }
14
15    fn delete_edge_type(
16        &self,
17        edge_key: linkrs_core::types::EdgeKey,
18    ) -> linkrs_transaction::undo_log::UndoLogResult<()> {
19        self.inner.delete_edge_type(edge_key)
20    }
21
22    fn delete_vertex(
23        &self,
24        vertex: linkrs_core::types::VertexIdentifier,
25        ts: linkrs_transaction::wal::Timestamp,
26    ) -> linkrs_transaction::undo_log::UndoLogResult<()> {
27        self.inner.delete_vertex(vertex, ts)
28    }
29
30    fn delete_edge(
31        &self,
32        edge_ctx: linkrs_core::types::EdgeDeletionContext,
33    ) -> linkrs_transaction::undo_log::UndoLogResult<()> {
34        self.inner.delete_edge(edge_ctx)
35    }
36
37    fn restore_edge(
38        &self,
39        edge: linkrs_core::types::EdgeIdentifier,
40        properties: Vec<(std::sync::Arc<str>, linkrs_core::Value)>,
41        ts: linkrs_transaction::wal::Timestamp,
42    ) -> linkrs_transaction::undo_log::UndoLogResult<()> {
43        self.inner.restore_edge(edge, properties, ts)
44    }
45
46    fn undo_update_edge_property(
47        &self,
48        edge_id: linkrs_core::types::EdgeIdentifier,
49        col_id: linkrs_core::types::ColumnId,
50        value: linkrs_core::Value,
51        ts: linkrs_transaction::wal::Timestamp,
52    ) -> linkrs_transaction::undo_log::UndoLogResult<()> {
53        self.inner
54            .undo_update_edge_property(edge_id, col_id, value, ts)
55    }
56
57    fn revert_delete_edge(
58        &self,
59        edge_ctx: linkrs_core::types::EdgeDeletionContext,
60    ) -> linkrs_transaction::undo_log::UndoLogResult<()> {
61        self.inner.revert_delete_edge(edge_ctx)
62    }
63
64    fn revert_delete_vertex_properties(
65        &self,
66        label_name: &str,
67        prop_names: &[Arc<str>],
68    ) -> linkrs_transaction::undo_log::UndoLogResult<()> {
69        self.inner
70            .revert_delete_vertex_properties(label_name, prop_names)
71    }
72
73    fn revert_delete_edge_properties(
74        &self,
75        src_label: &str,
76        dst_label: &str,
77        edge_label: &str,
78        prop_names: &[Arc<str>],
79    ) -> linkrs_transaction::undo_log::UndoLogResult<()> {
80        self.inner
81            .revert_delete_edge_properties(src_label, dst_label, edge_label, prop_names)
82    }
83
84    fn revert_delete_vertex_label(
85        &self,
86        label_name: &str,
87    ) -> linkrs_transaction::undo_log::UndoLogResult<()> {
88        self.inner.revert_delete_vertex_label(label_name)
89    }
90
91    fn revert_delete_edge_label(
92        &self,
93        src_label: &str,
94        dst_label: &str,
95        edge_label: &str,
96    ) -> linkrs_transaction::undo_log::UndoLogResult<()> {
97        self.inner
98            .revert_delete_edge_label(src_label, dst_label, edge_label)
99    }
100
101    fn revert_rename_vertex_properties(
102        &self,
103        label_name: &str,
104        current_names: &[Arc<str>],
105        original_names: &[Arc<str>],
106    ) -> linkrs_transaction::undo_log::UndoLogResult<()> {
107        self.inner
108            .revert_rename_vertex_properties(label_name, current_names, original_names)
109    }
110
111    fn revert_rename_edge_properties(
112        &self,
113        src_label: &str,
114        dst_label: &str,
115        edge_label: &str,
116        current_names: &[Arc<str>],
117        original_names: &[Arc<str>],
118    ) -> linkrs_transaction::undo_log::UndoLogResult<()> {
119        self.inner.revert_rename_edge_properties(
120            src_label,
121            dst_label,
122            edge_label,
123            current_names,
124            original_names,
125        )
126    }
127
128    fn staged_write_mark(
129        &self,
130        txn_id: linkrs_core::types::TransactionId,
131    ) -> Option<linkrs_core::types::StagedWriteMark> {
132        self.inner.staged_write_mark(txn_id)
133    }
134
135    fn rollback_staged_writes(
136        &self,
137        txn_id: linkrs_core::types::TransactionId,
138        mark: linkrs_core::types::StagedWriteMark,
139    ) -> linkrs_transaction::undo_log::UndoLogResult<()> {
140        self.inner.rollback_staged_writes(txn_id, mark)
141    }
142}