Skip to main content

ahri_tre_protocol/
tabular.rs

1use crate::refs::{DataFileRef, DatasetRef, ExportPackageRef, TabularResultRef};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
5#[serde(rename_all = "snake_case")]
6pub enum TabularFormat {
7    ArrowIpcStream,
8    ArrowIpcFile,
9    Parquet,
10}
11
12#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
13#[serde(tag = "kind", rename_all = "snake_case")]
14pub enum TabularDataRef {
15    InlineBuffer {
16        format: TabularFormat,
17        encoding: InlineBufferEncoding,
18        bytes: String,
19    },
20    ExternalReference {
21        format: TabularFormat,
22        reference: ExternalTabularReference,
23    },
24    Result {
25        format: TabularFormat,
26        result: TabularResultRef,
27    },
28    DataFile {
29        format: TabularFormat,
30        datafile: DataFileRef,
31    },
32    Dataset {
33        format: TabularFormat,
34        dataset: DatasetRef,
35    },
36    ExportPackage {
37        format: TabularFormat,
38        package: ExportPackageRef,
39    },
40}
41
42#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
43#[serde(rename_all = "snake_case")]
44pub enum InlineBufferEncoding {
45    Base64,
46}
47
48#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
49pub struct ExternalTabularReference {
50    pub uri: String,
51    #[serde(default, skip_serializing_if = "Option::is_none")]
52    pub digest: Option<String>,
53}