decthings_api/client/rpc/dataset/
request.rs1use crate::{
2 client::rpc::TagProvider,
3 tensor::{DecthingsParameterDefinition, DecthingsTensor},
4};
5use serde::Serialize;
6
7#[derive(Debug, Clone, Serialize)]
8#[serde(rename_all = "camelCase")]
9pub struct CreateDatasetParams<'a> {
10 pub name: &'a str,
12 pub description: &'a str,
14 #[serde(skip_serializing_if = "Option::is_none")]
16 pub public_access: Option<bool>,
17 #[serde(skip_serializing_if = "Option::is_none")]
19 pub tags: Option<&'a [TagProvider<'a>]>,
20 pub keys: &'a [&'a DecthingsParameterDefinition],
23}
24
25#[derive(Debug, Clone, Serialize)]
26#[serde(rename_all = "camelCase")]
27pub struct UpdateDatasetProperties<'a> {
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub name: Option<&'a str>,
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub description: Option<&'a str>,
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub public_access: Option<bool>,
34 #[serde(skip_serializing_if = "Option::is_none")]
35 pub tags: Option<&'a [TagProvider<'a>]>,
36}
37
38#[derive(Debug, Clone, Serialize)]
39#[serde(rename_all = "camelCase")]
40pub struct UpdateDatasetParams<'a> {
41 pub dataset_id: &'a str,
43 pub properties: UpdateDatasetProperties<'a>,
45}
46
47#[derive(Debug, Clone, Serialize)]
48#[serde(rename_all = "camelCase")]
49pub struct DeleteDatasetParams<'a> {
50 pub dataset_id: &'a str,
52}
53
54#[derive(Debug, Clone, Serialize)]
55#[serde(rename_all = "camelCase")]
56pub struct GetDatasetsFilter<'a, S: AsRef<str>> {
57 #[serde(serialize_with = "super::super::serialize_option_asref_str_seq")]
58 #[serde(skip_serializing_if = "Option::is_none")]
59 pub owners: Option<&'a [S]>,
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub tags: Option<&'a [TagProvider<'a>]>,
62 #[serde(serialize_with = "super::super::serialize_option_asref_str_seq")]
63 #[serde(skip_serializing_if = "Option::is_none")]
64 pub ids: Option<&'a [S]>,
65 #[serde(serialize_with = "super::super::serialize_option_asref_str_seq")]
66 #[serde(skip_serializing_if = "Option::is_none")]
67 pub names: Option<&'a [S]>,
68 #[serde(skip_serializing_if = "Option::is_none")]
69 pub search_name: Option<&'a str>,
70}
71
72#[derive(Debug, Clone, Serialize)]
73#[serde(rename_all = "camelCase")]
74pub enum SortDirection {
75 Asc,
76 Desc,
77}
78
79#[derive(Debug, Clone, Serialize)]
80#[serde(rename_all = "camelCase")]
81#[serde(bound(serialize = ""))]
82pub struct GetDatasetsParams<'a, S: AsRef<str>> {
83 #[serde(skip_serializing_if = "Option::is_none")]
85 pub offset: Option<u32>,
86 #[serde(skip_serializing_if = "Option::is_none")]
88 pub limit: Option<u32>,
89 #[serde(skip_serializing_if = "Option::is_none")]
91 pub filter: Option<GetDatasetsFilter<'a, S>>,
92 #[serde(skip_serializing_if = "Option::is_none")]
94 pub sort: Option<&'a str>,
95 #[serde(skip_serializing_if = "Option::is_none")]
96 pub sort_direction: Option<SortDirection>,
97}
98
99#[derive(Debug, Clone)]
100pub struct DataToAddForKey<'a> {
101 pub key: &'a str,
102 pub data: Vec<DecthingsTensor<'a>>,
103}
104
105impl Serialize for DataToAddForKey<'_> {
106 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
107 where
108 S: serde::Serializer,
109 {
110 serializer.serialize_str(self.key)
111 }
112}
113
114#[derive(Debug, Clone, Serialize)]
115#[serde(rename_all = "camelCase")]
116pub struct AddEntriesParams<'a> {
117 pub dataset_id: &'a str,
119 pub keys: Vec<DataToAddForKey<'a>>,
122 #[serde(skip_serializing_if = "Option::is_none")]
125 pub dataset_version_id: Option<&'a str>,
126}
127
128#[derive(Debug, Clone, Serialize)]
129#[serde(rename_all = "camelCase")]
130pub struct AddEntriesToNeedsReviewParams<'a> {
131 pub dataset_id: &'a str,
133 pub keys: Vec<DataToAddForKey<'a>>,
136 #[serde(skip_serializing_if = "Option::is_none")]
139 pub dataset_version_id: Option<&'a str>,
140}
141
142#[derive(Debug, Clone, Serialize)]
143#[serde(rename_all = "camelCase")]
144pub struct FinalizeNeedsReviewEntriesParams<'a> {
145 pub dataset_id: &'a str,
147 pub indexes: &'a [u32],
149 #[serde(skip_serializing)]
152 pub keys: Vec<DataToAddForKey<'a>>,
153 #[serde(skip_serializing_if = "Option::is_none")]
156 pub dataset_version_id: Option<&'a str>,
157}
158
159#[derive(Debug, Clone, Serialize)]
160#[serde(rename_all = "camelCase")]
161pub struct EntriesToGetRange {
162 pub start: u32,
163 pub end: u32,
164}
165
166#[derive(Debug, Clone, Serialize)]
167#[serde(untagged)]
168pub enum EntriesToGet<'a> {
169 Indexes(&'a [u32]),
170 Range(EntriesToGetRange),
171}
172
173#[derive(Debug, Clone, Serialize)]
174#[serde(rename_all = "camelCase")]
175pub struct GetEntriesParams<'a> {
176 pub dataset_id: &'a str,
178 pub entries: EntriesToGet<'a>,
180 #[serde(skip_serializing_if = "Option::is_none")]
183 pub dataset_version_id: Option<&'a str>,
184}
185
186#[derive(Debug, Clone, Serialize)]
187#[serde(rename_all = "camelCase")]
188pub struct GetNeedsReviewEntriesParams<'a> {
189 pub dataset_id: &'a str,
191 pub entries: EntriesToGet<'a>,
193 #[serde(skip_serializing_if = "Option::is_none")]
196 pub dataset_version_id: Option<&'a str>,
197}
198
199#[derive(Debug, Clone, Serialize)]
200#[serde(rename_all = "camelCase")]
201pub struct RemoveEntriesParams<'a> {
202 pub dataset_id: &'a str,
204 pub entries: &'a [u32],
206 #[serde(skip_serializing_if = "Option::is_none")]
209 pub dataset_version_id: Option<&'a str>,
210}
211
212#[derive(Debug, Clone, Serialize)]
213#[serde(rename_all = "camelCase")]
214pub struct RemoveNeedsReviewEntriesParams<'a> {
215 pub dataset_id: &'a str,
217 pub entries: &'a [u32],
219 #[serde(skip_serializing_if = "Option::is_none")]
222 pub dataset_version_id: Option<&'a str>,
223}