ahri_tre_protocol/
tabular.rs1use 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}