terminus_store/storage/
copy.rs1use std::io;
2
3use super::{BaseLayerFiles, ChildLayerFiles, FileLoad, FileStore, IdMapFiles};
4
5use tdb_succinct::storage::copy_file;
6
7impl<F1: 'static + FileLoad + FileStore> IdMapFiles<F1> {
8 pub async fn copy_from<F2: 'static + FileLoad + FileStore>(
9 &self,
10 from: &IdMapFiles<F2>,
11 ) -> io::Result<()> {
12 self.node_value_idmap_files
13 .copy_from(&from.node_value_idmap_files)
14 .await?;
15 self.predicate_idmap_files
16 .copy_from(&from.predicate_idmap_files)
17 .await?;
18
19 Ok(())
20 }
21}
22
23impl<F1: 'static + FileLoad + FileStore> BaseLayerFiles<F1> {
24 pub async fn copy_from<F2: 'static + FileLoad + FileStore>(
25 &self,
26 from: &BaseLayerFiles<F2>,
27 ) -> io::Result<()> {
28 self.node_dictionary_files
29 .copy_from(&from.node_dictionary_files)
30 .await?;
31 self.predicate_dictionary_files
32 .copy_from(&from.predicate_dictionary_files)
33 .await?;
34 self.value_dictionary_files
35 .copy_from(&from.value_dictionary_files)
36 .await?;
37 self.id_map_files.copy_from(&from.id_map_files).await?;
38 copy_file(&from.subjects_file, &self.subjects_file).await?;
39 copy_file(&from.objects_file, &self.objects_file).await?;
40 self.s_p_adjacency_list_files
41 .copy_from(&from.s_p_adjacency_list_files)
42 .await?;
43 self.sp_o_adjacency_list_files
44 .copy_from(&from.sp_o_adjacency_list_files)
45 .await?;
46 self.o_ps_adjacency_list_files
47 .copy_from(&from.o_ps_adjacency_list_files)
48 .await?;
49 self.predicate_wavelet_tree_files
50 .copy_from(&from.predicate_wavelet_tree_files)
51 .await?;
52
53 Ok(())
54 }
55}
56
57impl<F1: 'static + FileLoad + FileStore> ChildLayerFiles<F1> {
58 pub async fn copy_from<F2: 'static + FileLoad + FileStore>(
59 &self,
60 from: &ChildLayerFiles<F2>,
61 ) -> io::Result<()> {
62 self.node_dictionary_files
63 .copy_from(&from.node_dictionary_files)
64 .await?;
65 self.predicate_dictionary_files
66 .copy_from(&from.predicate_dictionary_files)
67 .await?;
68 self.value_dictionary_files
69 .copy_from(&from.value_dictionary_files)
70 .await?;
71 self.id_map_files.copy_from(&from.id_map_files).await?;
72
73 copy_file(&from.pos_subjects_file, &self.pos_subjects_file).await?;
74 copy_file(&from.pos_objects_file, &self.pos_objects_file).await?;
75 self.pos_s_p_adjacency_list_files
76 .copy_from(&from.pos_s_p_adjacency_list_files)
77 .await?;
78 self.pos_sp_o_adjacency_list_files
79 .copy_from(&from.pos_sp_o_adjacency_list_files)
80 .await?;
81 self.pos_o_ps_adjacency_list_files
82 .copy_from(&from.pos_o_ps_adjacency_list_files)
83 .await?;
84 self.pos_predicate_wavelet_tree_files
85 .copy_from(&from.pos_predicate_wavelet_tree_files)
86 .await?;
87
88 copy_file(&from.neg_subjects_file, &self.neg_subjects_file).await?;
89 copy_file(&from.neg_objects_file, &self.neg_objects_file).await?;
90 self.neg_s_p_adjacency_list_files
91 .copy_from(&from.neg_s_p_adjacency_list_files)
92 .await?;
93 self.neg_sp_o_adjacency_list_files
94 .copy_from(&from.neg_sp_o_adjacency_list_files)
95 .await?;
96 self.neg_o_ps_adjacency_list_files
97 .copy_from(&from.neg_o_ps_adjacency_list_files)
98 .await?;
99 self.neg_predicate_wavelet_tree_files
100 .copy_from(&from.neg_predicate_wavelet_tree_files)
101 .await?;
102
103 Ok(())
104 }
105}