Skip to content

Commit 04ebb66

Browse files
authored
Add structured data sources into model (#57)
1 parent a1f0b98 commit 04ebb66

File tree

6 files changed

+56
-8
lines changed

6 files changed

+56
-8
lines changed

src/model/array.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ pub struct ArrayAttributes {
3131
pub structure: ArrayStructure,
3232
pub access_blob: Value,
3333
pub sorting: Value,
34-
pub data_sources: Value,
34+
pub data_sources: Option<Vec<node::DataSource>>,
3535
}
3636

3737
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, SimpleObject)]

src/model/container.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ pub struct Container {
99
}
1010

1111
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, SimpleObject)]
12-
pub struct Structure {
12+
pub struct ContainerStructure {
1313
pub contents: Value,
1414
pub count: i64,
1515
}

src/model/event_stream.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ pub struct EventStreamContainerAttributes {
3737
pub structure_family: String,
3838
pub specs: Vec<container::Specs>,
3939
pub metadata: EventStreamMetadata,
40-
pub structure: container::Structure,
40+
pub structure: container::ContainerStructure,
4141
pub access_blob: Value,
4242
pub sorting: Option<Vec<container::Sorting>>,
43-
pub data_sources: Value,
43+
pub data_sources: Option<Vec<node::DataSource>>,
4444
}
4545

4646
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, SimpleObject)]

src/model/node.rs

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1-
use async_graphql::SimpleObject;
1+
use std::collections::HashMap;
2+
3+
use async_graphql::{Enum, SimpleObject, Union};
24
use serde::{Deserialize, Serialize};
5+
use serde_json::Value;
6+
7+
use crate::model::{array, container, table};
38

49
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, SimpleObject)]
510
pub struct Links {
@@ -14,3 +19,46 @@ pub struct Links {
1419
pub search: Option<String>,
1520
pub full: Option<String>,
1621
}
22+
23+
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, SimpleObject)]
24+
pub struct DataSource {
25+
#[serde(flatten)]
26+
pub structure: Structure,
27+
pub id: Option<u64>,
28+
pub mimetype: Option<String>,
29+
pub parameters: HashMap<String, Value>,
30+
pub assets: Vec<Asset>,
31+
management: Management,
32+
}
33+
34+
#[derive(Union, Debug, Clone, PartialEq, Serialize, Deserialize)]
35+
#[serde(
36+
rename_all = "lowercase",
37+
tag = "structure_family",
38+
content = "structure"
39+
)]
40+
pub enum Structure {
41+
Array(array::ArrayStructure),
42+
//Awkward(AwkwardSructure),
43+
Container(container::ContainerStructure),
44+
//Sparse(SparseStructure),
45+
Table(table::TableStructure),
46+
}
47+
48+
#[derive(Enum, Debug, Copy, Clone, Eq, PartialEq, Serialize, Deserialize)]
49+
#[serde(rename_all = "lowercase")]
50+
pub enum Management {
51+
External,
52+
Immutable,
53+
Locked,
54+
Writable,
55+
}
56+
57+
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, SimpleObject)]
58+
pub struct Asset {
59+
data_uri: String,
60+
is_directory: bool,
61+
parameter: Option<String>,
62+
num: Option<i64>,
63+
id: Option<i64>,
64+
}

src/model/run.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ pub struct RunContainerAttributes {
3737
pub structure_family: String,
3838
pub specs: Vec<container::Specs>,
3939
pub metadata: RunMetadata,
40-
pub structure: container::Structure,
40+
pub structure: container::ContainerStructure,
4141
pub access_blob: Value,
4242
pub sorting: Vec<container::Sorting>,
43-
pub data_sources: Value,
43+
pub data_sources: Option<Vec<node::DataSource>>,
4444
}
4545

4646
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, SimpleObject)]

src/model/table.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ pub struct TableAttributes {
3333
pub structure: TableStructure,
3434
pub access_blob: Value,
3535
pub sorting: Value,
36-
pub data_sources: Value,
36+
pub data_sources: Option<Vec<node::DataSource>>,
3737
}
3838

3939
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, SimpleObject)]

0 commit comments

Comments
 (0)