z_osmf/workflows/
archived_workflows.rs1use std::marker::PhantomData;
2use std::sync::Arc;
3
4use serde::{Deserialize, Serialize};
5use z_osmf_macros::{Endpoint, Getters};
6
7use crate::convert::TryFromResponse;
8use crate::ClientCore;
9
10#[derive(Clone, Debug, Deserialize, Eq, Getters, Hash, Ord, PartialEq, PartialOrd, Serialize)]
11pub struct ArchivedWorkflow {
12 name: Arc<str>,
13 key: Arc<str>,
14 uri: Arc<str>,
15}
16
17#[derive(Clone, Debug, Deserialize, Eq, Getters, Hash, Ord, PartialEq, PartialOrd, Serialize)]
18pub struct ArchivedWorkflowList {
19 items: Arc<[ArchivedWorkflow]>,
20}
21
22impl TryFromResponse for ArchivedWorkflowList {
23 async fn try_from_response(value: reqwest::Response) -> crate::Result<Self> {
24 let json: ResponseJson = value.json().await?;
25 let items = json
26 .archived_workflows
27 .into_iter()
28 .map(|workflow| ArchivedWorkflow {
29 name: workflow.workflow_name,
30 key: workflow.workflow_key,
31 uri: workflow.archived_instance_u_r_i,
32 })
33 .collect();
34
35 Ok(ArchivedWorkflowList { items })
36 }
37}
38
39#[derive(Clone, Debug, Endpoint)]
40#[endpoint(method = get, path = "/zosmf/workflow/rest/1.0/archivedworkflows")]
41pub struct ArchivedWorkflowListBuilder<T>
42where
43 T: TryFromResponse,
44{
45 core: Arc<ClientCore>,
46
47 #[endpoint(query = "Orderby")]
48 order_by: Option<WorkflowOrderBy>,
49 #[endpoint(query = "View")]
50 view: Option<WorkflowView>,
51
52 target_type: PhantomData<T>,
53}
54
55#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
56pub enum WorkflowOrderBy {
57 Asc,
58 Desc,
59}
60
61#[derive(
62 Clone, Copy, Debug, Default, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize,
63)]
64pub enum WorkflowView {
65 Domain,
66 #[default]
67 User,
68}
69
70#[derive(Debug, Deserialize)]
71#[serde(rename_all = "camelCase")]
72struct ResponseJson {
73 archived_workflows: Vec<ResponseArchivedWorkflow>,
74}
75
76#[derive(Debug, Deserialize)]
77#[serde(rename_all = "camelCase")]
78struct ResponseArchivedWorkflow {
79 workflow_name: Arc<str>,
80 workflow_key: Arc<str>,
81 archived_instance_u_r_i: Arc<str>,
82}