Skip to main content

runmat_filesystem/
data_contract.rs

1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4/// Provider-neutral dataset manifest descriptor shared by runtime and remote clients.
5#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
6pub struct DataManifestDescriptor {
7    pub schema_version: u32,
8    pub format: String,
9    pub dataset_id: String,
10    pub updated_at: String,
11    pub txn_sequence: u64,
12}
13
14/// Request payload for fetching dataset metadata from remote implementations.
15#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
16pub struct DataManifestRequest {
17    pub path: String,
18    pub version: Option<String>,
19}
20
21/// Chunk descriptor used by remote dataset chunk APIs.
22#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
23pub struct DataChunkDescriptor {
24    pub key: String,
25    pub object_id: String,
26    pub hash: String,
27    pub bytes_raw: u64,
28    pub bytes_stored: u64,
29}
30
31/// Request payload for batched chunk upload target issuance.
32#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
33pub struct DataChunkUploadRequest {
34    pub dataset_path: String,
35    pub array: String,
36    pub chunks: Vec<DataChunkDescriptor>,
37}
38
39/// Response payload for provider-neutral chunk upload targets.
40#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
41pub struct DataChunkUploadTarget {
42    pub key: String,
43    pub method: String,
44    pub upload_url: String,
45    pub headers: HashMap<String, String>,
46}