lxdb_engine/
dataset_ext.rs1use lxdb_core::ids::TokenId;
2use lxdb_format::{AdjacencyRecord, RelationRecord, TokenRecord};
3use lxdb_storage::BinaryDataset;
4
5use crate::{
6 AdjacencyRecordIter, BinaryTokenIter, DatasetQuery, EngineError, RecordIter,
7 RelationRecordIter, TokenRecordIter, relation::outgoing_relations,
8};
9
10pub trait BinaryDatasetExt {
11 fn tokens(&self) -> TokenRecordIter<'_>;
12
13 fn relations(&self) -> RelationRecordIter<'_>;
14
15 fn adjacency(&self) -> AdjacencyRecordIter<'_>;
16
17 fn resolved_tokens(&self) -> BinaryTokenIter<'_>;
18
19 fn outgoing(&self, token_id: TokenId) -> Result<RelationRecordIter<'_>, EngineError>;
20
21 fn query(&self) -> DatasetQuery<'_>;
22}
23
24impl BinaryDatasetExt for BinaryDataset {
25 fn tokens(&self) -> TokenRecordIter<'_> {
26 RecordIter::<TokenRecord>::new(self.token_records())
27 }
28
29 fn relations(&self) -> RelationRecordIter<'_> {
30 RecordIter::<RelationRecord>::new(self.relation_records())
31 }
32
33 fn adjacency(&self) -> AdjacencyRecordIter<'_> {
34 RecordIter::<AdjacencyRecord>::new(self.adjacency_records())
35 }
36
37 fn resolved_tokens(&self) -> BinaryTokenIter<'_> {
38 BinaryTokenIter::new(self.tokens(), self.token_string_table())
39 }
40
41 fn outgoing(&self, token_id: TokenId) -> Result<RelationRecordIter<'_>, EngineError> {
42 outgoing_relations(self, token_id)
43 }
44
45 fn query(&self) -> DatasetQuery<'_> {
46 DatasetQuery::new(self)
47 }
48}