rdf_fusion_encoding/sortable_term/
array.rs1use crate::TermEncoding;
2use crate::encoding::EncodingArray;
3use crate::sortable_term::{SORTABLE_TERM_ENCODING, SortableTermEncoding};
4use datafusion::arrow::array::{Array, ArrayRef};
5use datafusion::common::exec_err;
6use datafusion::error::DataFusionError;
7
8#[derive(Clone)]
10pub struct SortableTermArray {
11 inner: ArrayRef,
12}
13
14impl SortableTermArray {}
15
16impl EncodingArray for SortableTermArray {
17 type Encoding = SortableTermEncoding;
18
19 fn encoding(&self) -> &Self::Encoding {
20 &SORTABLE_TERM_ENCODING
21 }
22
23 fn array(&self) -> &ArrayRef {
24 &self.inner
25 }
26
27 fn into_array(self) -> ArrayRef {
28 self.inner
29 }
30}
31
32impl TryFrom<ArrayRef> for SortableTermArray {
33 type Error = DataFusionError;
34
35 fn try_from(value: ArrayRef) -> Result<Self, Self::Error> {
36 if value.data_type() != &SORTABLE_TERM_ENCODING.data_type() {
37 return exec_err!(
38 "Expected array with SortableEncoded terms, got: {}",
39 value.data_type()
40 );
41 }
42 Ok(Self { inner: value })
43 }
44}