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>;