meegle/subtask/
types.rs

1use crate::structs::{FieldValuePair, NodeTask, RoleOwner, Schedule, SubDetail};
2use derive_builder::Builder;
3use serde::Serialize;
4
5#[derive(Builder, Debug, Default, Serialize)]
6#[builder(setter(into, strip_option))]
7#[builder(default)]
8pub struct CreateSubTaskRequest {
9    pub node_id: String,
10    pub name: String,
11    pub alias_key: Option<String>,
12    pub assignee: Option<Vec<String>>,
13    pub role_assignee: Option<Vec<RoleOwner>>,
14    pub schedule: Option<Schedule>,
15    pub note: Option<String>,
16    pub field_value_pairs: Option<Vec<FieldValuePair>>,
17}
18
19#[derive(Builder, Debug, Default, Serialize)]
20#[builder(setter(into, strip_option))]
21#[builder(default)]
22pub struct UpdateSubTaskRequest {
23    pub name: Option<String>,
24    pub deliverable: Option<Vec<FieldValuePair>>,
25    pub assignee: Option<Vec<String>>,
26    pub role_assignee: Option<Vec<RoleOwner>>,
27    pub schedule: Option<Schedule>,
28    pub note: Option<String>,
29    pub update_fields: Option<Vec<FieldValuePair>>,
30}
31
32#[derive(Builder, Debug, Default, Serialize)]
33#[builder(setter(into, strip_option))]
34#[builder(default)]
35pub struct ModifySubTaskRequest {
36    pub node_id: String,
37    pub task_id: i64,
38    pub action: String,
39    pub assignee: Option<Vec<String>>,
40    pub role_assignee: Option<Vec<RoleOwner>>,
41    pub schedules: Option<Vec<Schedule>>,
42    pub deliverable: Option<Vec<FieldValuePair>>,
43    pub note: Option<String>,
44}
45
46#[derive(Builder, Debug, Default, Serialize)]
47#[builder(setter(into, strip_option))]
48#[builder(default)]
49pub struct SearchSubTaskRequest {
50    pub project_keys: Option<Vec<String>>,
51    pub simple_names: Option<Vec<String>>,
52    pub page_size: Option<i32>,
53    pub page_num: Option<i32>,
54    pub name: Option<String>,
55    pub user_keys: Option<Vec<String>>,
56    pub status: Option<i32>,
57    pub created_at: Option<TimeInterval>,
58}
59
60#[derive(Clone, Debug, Serialize)]
61pub struct TimeInterval {
62    pub start: i64,
63    pub end: i64,
64}
65
66pub type GetSubTaskResponse = Vec<NodeTask>;
67pub type SearchSubTaskResponse = Vec<SubDetail>;