gitea_sdk/api/pulls/
edit.rs

1use 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    /// Sends the request to edit a pull request
55    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}