gitea_sdk/api/pulls/
edit.rs1use build_it::Builder;
2use serde::Serialize;
3
4use crate::{
5 error::Result,
6 model::{issues::StateType, pulls::PullRequest},
7 Client,
8};
9
10#[derive(Debug, Clone, Serialize, Builder)]
11#[build_it(into)]
12pub struct EditPullRequestBuilder {
13 #[serde(skip)]
14 #[skip]
15 owner: String,
16 #[serde(skip)]
17 #[skip]
18 repo: String,
19 #[serde(skip)]
20 #[skip]
21 id: i64,
22
23 allow_maintainer_edit: Option<bool>,
24 assignees: Option<Vec<String>>,
25 base: Option<String>,
26 body: Option<String>,
27 due_date: Option<String>,
28 labels: Option<Vec<i64>>,
29 milestone: Option<i64>,
30 state: Option<StateType>,
31 title: Option<String>,
32 unset_due_date: Option<bool>,
33}
34
35impl EditPullRequestBuilder {
36 pub fn new(owner: impl ToString, repo: impl ToString, id: i64) -> Self {
37 Self {
38 owner: owner.to_string(),
39 repo: repo.to_string(),
40 id,
41 allow_maintainer_edit: None,
42 assignees: None,
43 base: None,
44 body: None,
45 due_date: None,
46 labels: None,
47 milestone: None,
48 state: None,
49 title: None,
50 unset_due_date: None,
51 }
52 }
53
54 pub async fn send(&self, client: &Client) -> Result<PullRequest> {
56 let owner = &self.owner;
57 let repo = &self.repo;
58 let id = self.id;
59 let req = client
60 .patch(format!("repos/{owner}/{repo}/pulls/{id}"))
61 .json(self)
62 .build()?;
63 let res = client.make_request(req).await?;
64 client.parse_response(res).await
65 }
66}