1use serde::{Deserialize, Serialize};
2#[derive(Clone, Debug, Deserialize, Serialize)]
4#[serde(deny_unknown_fields)]
5pub struct ComponentsView {
6 #[serde(default, skip_serializing_if = "serde_json::Map::is_empty")]
8 pub context: serde_json::Map<String, serde_json::Value>,
9 #[serde(default, skip_serializing_if = "Option::is_none")]
10 pub find: Option<ComponentsViewDefinitionsFind>,
11 pub name: String,
13 #[serde(default, skip_serializing_if = "Option::is_none")]
14 pub props: Option<DefsProps>,
15 #[serde(rename = "_type")]
17 pub type_: serde_json::Value,
18}
19impl From<&ComponentsView> for ComponentsView {
20 fn from(value: &ComponentsView) -> Self {
21 value.clone()
22 }
23}
24impl ComponentsView {
25 pub fn builder() -> builder::ComponentsView {
26 builder::ComponentsView::default()
27 }
28}
29#[derive(Clone, Debug, Deserialize, Serialize)]
31#[serde(deny_unknown_fields)]
32pub struct ComponentsViewDefinitionsFind {
33 pub coll: String,
35 #[serde(default, skip_serializing_if = "Option::is_none")]
36 pub projection: Option<DataProjection>,
37 pub query: DataQuery,
38}
39impl From<&ComponentsViewDefinitionsFind> for ComponentsViewDefinitionsFind {
40 fn from(value: &ComponentsViewDefinitionsFind) -> Self {
41 value.clone()
42 }
43}
44impl ComponentsViewDefinitionsFind {
45 pub fn builder() -> builder::ComponentsViewDefinitionsFind {
46 builder::ComponentsViewDefinitionsFind::default()
47 }
48}
49#[derive(Clone, Debug, Deserialize, Serialize)]
51pub struct DataProjection(pub serde_json::Map<String, serde_json::Value>);
52impl std::ops::Deref for DataProjection {
53 type Target = serde_json::Map<String, serde_json::Value>;
54 fn deref(&self) -> &serde_json::Map<String, serde_json::Value> {
55 &self.0
56 }
57}
58impl From<DataProjection> for serde_json::Map<String, serde_json::Value> {
59 fn from(value: DataProjection) -> Self {
60 value.0
61 }
62}
63impl From<&DataProjection> for DataProjection {
64 fn from(value: &DataProjection) -> Self {
65 value.clone()
66 }
67}
68impl From<serde_json::Map<String, serde_json::Value>> for DataProjection {
69 fn from(value: serde_json::Map<String, serde_json::Value>) -> Self {
70 Self(value)
71 }
72}
73#[derive(Clone, Debug, Deserialize, Serialize)]
75pub struct DataQuery(pub serde_json::Map<String, serde_json::Value>);
76impl std::ops::Deref for DataQuery {
77 type Target = serde_json::Map<String, serde_json::Value>;
78 fn deref(&self) -> &serde_json::Map<String, serde_json::Value> {
79 &self.0
80 }
81}
82impl From<DataQuery> for serde_json::Map<String, serde_json::Value> {
83 fn from(value: DataQuery) -> Self {
84 value.0
85 }
86}
87impl From<&DataQuery> for DataQuery {
88 fn from(value: &DataQuery) -> Self {
89 value.clone()
90 }
91}
92impl From<serde_json::Map<String, serde_json::Value>> for DataQuery {
93 fn from(value: serde_json::Map<String, serde_json::Value>) -> Self {
94 Self(value)
95 }
96}
97#[derive(Clone, Debug, Deserialize, Serialize)]
99pub struct DefsProps(pub serde_json::Map<String, serde_json::Value>);
100impl std::ops::Deref for DefsProps {
101 type Target = serde_json::Map<String, serde_json::Value>;
102 fn deref(&self) -> &serde_json::Map<String, serde_json::Value> {
103 &self.0
104 }
105}
106impl From<DefsProps> for serde_json::Map<String, serde_json::Value> {
107 fn from(value: DefsProps) -> Self {
108 value.0
109 }
110}
111impl From<&DefsProps> for DefsProps {
112 fn from(value: &DefsProps) -> Self {
113 value.clone()
114 }
115}
116impl From<serde_json::Map<String, serde_json::Value>> for DefsProps {
117 fn from(value: serde_json::Map<String, serde_json::Value>) -> Self {
118 Self(value)
119 }
120}
121#[derive(Clone, Debug, Deserialize, Serialize)]
122#[serde(deny_unknown_fields)]
123pub struct Exposer {
124 pub routes: Vec<Route>,
126 #[serde(default, skip_serializing_if = "Option::is_none")]
128 pub version: Option<String>,
129}
130impl From<&Exposer> for Exposer {
131 fn from(value: &Exposer) -> Self {
132 value.clone()
133 }
134}
135impl Exposer {
136 pub fn builder() -> builder::Exposer {
137 builder::Exposer::default()
138 }
139}
140#[derive(Clone, Debug, Deserialize, Serialize)]
142#[serde(deny_unknown_fields)]
143pub struct Manifest {
144 #[serde(default, skip_serializing_if = "Option::is_none")]
146 pub json: Option<Exposer>,
147 #[serde(default, skip_serializing_if = "Option::is_none")]
149 pub lenra: Option<Exposer>,
150}
151impl From<&Manifest> for Manifest {
152 fn from(value: &Manifest) -> Self {
153 value.clone()
154 }
155}
156impl Manifest {
157 pub fn builder() -> builder::Manifest {
158 builder::Manifest::default()
159 }
160}
161#[derive(Clone, Debug, Deserialize, Serialize)]
162#[serde(deny_unknown_fields)]
163pub struct Route {
164 pub path: String,
165 pub view: ComponentsView,
166}
167impl From<&Route> for Route {
168 fn from(value: &Route) -> Self {
169 value.clone()
170 }
171}
172impl Route {
173 pub fn builder() -> builder::Route {
174 builder::Route::default()
175 }
176}
177pub mod builder {
178 #[derive(Clone, Debug)]
179 pub struct ComponentsView {
180 context: Result<serde_json::Map<String, serde_json::Value>, String>,
181 find: Result<Option<super::ComponentsViewDefinitionsFind>, String>,
182 name: Result<String, String>,
183 props: Result<Option<super::DefsProps>, String>,
184 type_: Result<serde_json::Value, String>,
185 }
186 impl Default for ComponentsView {
187 fn default() -> Self {
188 Self {
189 context: Ok(Default::default()),
190 find: Ok(Default::default()),
191 name: Err("no value supplied for name".to_string()),
192 props: Ok(Default::default()),
193 type_: Err("no value supplied for type_".to_string()),
194 }
195 }
196 }
197 impl ComponentsView {
198 pub fn context<T>(mut self, value: T) -> Self
199 where
200 T: std::convert::TryInto<serde_json::Map<String, serde_json::Value>>,
201 T::Error: std::fmt::Display,
202 {
203 self
204 .context = value
205 .try_into()
206 .map_err(|e| {
207 format!("error converting supplied value for context: {}", e)
208 });
209 self
210 }
211 pub fn find<T>(mut self, value: T) -> Self
212 where
213 T: std::convert::TryInto<Option<super::ComponentsViewDefinitionsFind>>,
214 T::Error: std::fmt::Display,
215 {
216 self
217 .find = value
218 .try_into()
219 .map_err(|e| format!("error converting supplied value for find: {}", e));
220 self
221 }
222 pub fn name<T>(mut self, value: T) -> Self
223 where
224 T: std::convert::TryInto<String>,
225 T::Error: std::fmt::Display,
226 {
227 self
228 .name = value
229 .try_into()
230 .map_err(|e| format!("error converting supplied value for name: {}", e));
231 self
232 }
233 pub fn props<T>(mut self, value: T) -> Self
234 where
235 T: std::convert::TryInto<Option<super::DefsProps>>,
236 T::Error: std::fmt::Display,
237 {
238 self
239 .props = value
240 .try_into()
241 .map_err(|e| {
242 format!("error converting supplied value for props: {}", e)
243 });
244 self
245 }
246 pub fn type_<T>(mut self, value: T) -> Self
247 where
248 T: std::convert::TryInto<serde_json::Value>,
249 T::Error: std::fmt::Display,
250 {
251 self
252 .type_ = value
253 .try_into()
254 .map_err(|e| {
255 format!("error converting supplied value for type_: {}", e)
256 });
257 self
258 }
259 }
260 impl std::convert::TryFrom<ComponentsView> for super::ComponentsView {
261 type Error = String;
262 fn try_from(value: ComponentsView) -> Result<Self, String> {
263 Ok(Self {
264 context: value.context?,
265 find: value.find?,
266 name: value.name?,
267 props: value.props?,
268 type_: value.type_?,
269 })
270 }
271 }
272 impl From<super::ComponentsView> for ComponentsView {
273 fn from(value: super::ComponentsView) -> Self {
274 Self {
275 context: Ok(value.context),
276 find: Ok(value.find),
277 name: Ok(value.name),
278 props: Ok(value.props),
279 type_: Ok(value.type_),
280 }
281 }
282 }
283 #[derive(Clone, Debug)]
284 pub struct ComponentsViewDefinitionsFind {
285 coll: Result<String, String>,
286 projection: Result<Option<super::DataProjection>, String>,
287 query: Result<super::DataQuery, String>,
288 }
289 impl Default for ComponentsViewDefinitionsFind {
290 fn default() -> Self {
291 Self {
292 coll: Err("no value supplied for coll".to_string()),
293 projection: Ok(Default::default()),
294 query: Err("no value supplied for query".to_string()),
295 }
296 }
297 }
298 impl ComponentsViewDefinitionsFind {
299 pub fn coll<T>(mut self, value: T) -> Self
300 where
301 T: std::convert::TryInto<String>,
302 T::Error: std::fmt::Display,
303 {
304 self
305 .coll = value
306 .try_into()
307 .map_err(|e| format!("error converting supplied value for coll: {}", e));
308 self
309 }
310 pub fn projection<T>(mut self, value: T) -> Self
311 where
312 T: std::convert::TryInto<Option<super::DataProjection>>,
313 T::Error: std::fmt::Display,
314 {
315 self
316 .projection = value
317 .try_into()
318 .map_err(|e| {
319 format!("error converting supplied value for projection: {}", e)
320 });
321 self
322 }
323 pub fn query<T>(mut self, value: T) -> Self
324 where
325 T: std::convert::TryInto<super::DataQuery>,
326 T::Error: std::fmt::Display,
327 {
328 self
329 .query = value
330 .try_into()
331 .map_err(|e| {
332 format!("error converting supplied value for query: {}", e)
333 });
334 self
335 }
336 }
337 impl std::convert::TryFrom<ComponentsViewDefinitionsFind>
338 for super::ComponentsViewDefinitionsFind {
339 type Error = String;
340 fn try_from(value: ComponentsViewDefinitionsFind) -> Result<Self, String> {
341 Ok(Self {
342 coll: value.coll?,
343 projection: value.projection?,
344 query: value.query?,
345 })
346 }
347 }
348 impl From<super::ComponentsViewDefinitionsFind> for ComponentsViewDefinitionsFind {
349 fn from(value: super::ComponentsViewDefinitionsFind) -> Self {
350 Self {
351 coll: Ok(value.coll),
352 projection: Ok(value.projection),
353 query: Ok(value.query),
354 }
355 }
356 }
357 #[derive(Clone, Debug)]
358 pub struct Exposer {
359 routes: Result<Vec<super::Route>, String>,
360 version: Result<Option<String>, String>,
361 }
362 impl Default for Exposer {
363 fn default() -> Self {
364 Self {
365 routes: Err("no value supplied for routes".to_string()),
366 version: Ok(Default::default()),
367 }
368 }
369 }
370 impl Exposer {
371 pub fn routes<T>(mut self, value: T) -> Self
372 where
373 T: std::convert::TryInto<Vec<super::Route>>,
374 T::Error: std::fmt::Display,
375 {
376 self
377 .routes = value
378 .try_into()
379 .map_err(|e| {
380 format!("error converting supplied value for routes: {}", e)
381 });
382 self
383 }
384 pub fn version<T>(mut self, value: T) -> Self
385 where
386 T: std::convert::TryInto<Option<String>>,
387 T::Error: std::fmt::Display,
388 {
389 self
390 .version = value
391 .try_into()
392 .map_err(|e| {
393 format!("error converting supplied value for version: {}", e)
394 });
395 self
396 }
397 }
398 impl std::convert::TryFrom<Exposer> for super::Exposer {
399 type Error = String;
400 fn try_from(value: Exposer) -> Result<Self, String> {
401 Ok(Self {
402 routes: value.routes?,
403 version: value.version?,
404 })
405 }
406 }
407 impl From<super::Exposer> for Exposer {
408 fn from(value: super::Exposer) -> Self {
409 Self {
410 routes: Ok(value.routes),
411 version: Ok(value.version),
412 }
413 }
414 }
415 #[derive(Clone, Debug)]
416 pub struct Manifest {
417 json: Result<Option<super::Exposer>, String>,
418 lenra: Result<Option<super::Exposer>, String>,
419 }
420 impl Default for Manifest {
421 fn default() -> Self {
422 Self {
423 json: Ok(Default::default()),
424 lenra: Ok(Default::default()),
425 }
426 }
427 }
428 impl Manifest {
429 pub fn json<T>(mut self, value: T) -> Self
430 where
431 T: std::convert::TryInto<Option<super::Exposer>>,
432 T::Error: std::fmt::Display,
433 {
434 self
435 .json = value
436 .try_into()
437 .map_err(|e| format!("error converting supplied value for json: {}", e));
438 self
439 }
440 pub fn lenra<T>(mut self, value: T) -> Self
441 where
442 T: std::convert::TryInto<Option<super::Exposer>>,
443 T::Error: std::fmt::Display,
444 {
445 self
446 .lenra = value
447 .try_into()
448 .map_err(|e| {
449 format!("error converting supplied value for lenra: {}", e)
450 });
451 self
452 }
453 }
454 impl std::convert::TryFrom<Manifest> for super::Manifest {
455 type Error = String;
456 fn try_from(value: Manifest) -> Result<Self, String> {
457 Ok(Self {
458 json: value.json?,
459 lenra: value.lenra?,
460 })
461 }
462 }
463 impl From<super::Manifest> for Manifest {
464 fn from(value: super::Manifest) -> Self {
465 Self {
466 json: Ok(value.json),
467 lenra: Ok(value.lenra),
468 }
469 }
470 }
471 #[derive(Clone, Debug)]
472 pub struct Route {
473 path: Result<String, String>,
474 view: Result<super::ComponentsView, String>,
475 }
476 impl Default for Route {
477 fn default() -> Self {
478 Self {
479 path: Err("no value supplied for path".to_string()),
480 view: Err("no value supplied for view".to_string()),
481 }
482 }
483 }
484 impl Route {
485 pub fn path<T>(mut self, value: T) -> Self
486 where
487 T: std::convert::TryInto<String>,
488 T::Error: std::fmt::Display,
489 {
490 self
491 .path = value
492 .try_into()
493 .map_err(|e| format!("error converting supplied value for path: {}", e));
494 self
495 }
496 pub fn view<T>(mut self, value: T) -> Self
497 where
498 T: std::convert::TryInto<super::ComponentsView>,
499 T::Error: std::fmt::Display,
500 {
501 self
502 .view = value
503 .try_into()
504 .map_err(|e| format!("error converting supplied value for view: {}", e));
505 self
506 }
507 }
508 impl std::convert::TryFrom<Route> for super::Route {
509 type Error = String;
510 fn try_from(value: Route) -> Result<Self, String> {
511 Ok(Self {
512 path: value.path?,
513 view: value.view?,
514 })
515 }
516 }
517 impl From<super::Route> for Route {
518 fn from(value: super::Route) -> Self {
519 Self {
520 path: Ok(value.path),
521 view: Ok(value.view),
522 }
523 }
524 }
525}