meegle/project_relation/
types.rs

1use derive_builder::Builder;
2use serde::Serialize;
3use crate::structs::{ProjectRelationRule, RelationInstance, RelationBindInstance};
4
5#[derive(Builder, Debug, Default, Serialize)]
6#[builder(setter(into, strip_option))]
7#[builder(default)]
8pub struct GetProjectRelationRulesRequest {
9    pub project_key: String,
10    pub remote_projects: Option<Vec<String>>,
11}
12
13pub type GetProjectRelationRulesResponse = Vec<ProjectRelationRule>;
14
15#[derive(Builder, Debug, Default, Serialize)]
16#[builder(setter(into, strip_option))]
17#[builder(default)]
18pub struct GetRelationInstancesRequest {
19    pub project_key: String,
20    pub work_item_type_key: String,
21    pub work_item_id: i64,
22    pub relation_work_item_type_key: Option<String>,
23    pub relation_project_key: Option<String>,
24    pub relation_rule_id: Option<String>,
25}
26
27pub type GetRelationInstancesResponse = Vec<RelationInstance>;
28
29#[derive(Builder, Debug, Default, Serialize)]
30#[builder(setter(into, strip_option))]
31#[builder(default)]
32pub struct BatchBindRelationRequest {
33    pub project_key: String,
34    pub work_item_type_key: String,
35    pub work_item_id: i64,
36    pub instances: Vec<RelationBindInstance>,
37    pub relation_rule_id: i64,
38}
39
40pub type BatchBindRelationResponse = serde_json::Value;
41
42#[derive(Builder, Debug, Default, Serialize)]
43#[builder(setter(into, strip_option))]
44#[builder(default)]
45pub struct UnbindRelationRequest {
46    pub project_key: String,
47    pub work_item_type_key: String,
48    pub work_item_id: i64,
49    pub relation_work_item_id: i64,
50    pub relation_rule_id: String,
51}
52
53pub type UnbindRelationResponse = serde_json::Value;