gitea_sdk/api/pulls/
list.rs1use build_it::Builder;
2use serde::Serialize;
3
4use crate::{
5 error::Result,
6 model::{
7 issues::State,
8 pulls::{PullRequest, Sort},
9 },
10 Client,
11};
12
13#[derive(Debug, Clone, Serialize, Builder)]
14#[build_it(into)]
15pub struct ListPullRequestsBuilder {
16 #[skip]
17 #[serde(skip)]
18 owner: String,
19 #[skip]
20 #[serde(skip)]
21 repo: String,
22
23 state: Option<State>,
24 sort: Option<Sort>,
25 milestone: Option<i64>,
26 labels: Option<Vec<i64>>,
28 page: Option<i64>,
30 limit: Option<i64>,
32}
33
34impl ListPullRequestsBuilder {
35 pub fn new(owner: impl ToString, repo: impl ToString) -> Self {
36 Self {
37 owner: owner.to_string(),
38 repo: repo.to_string(),
39 state: None,
40 sort: None,
41 milestone: None,
42 labels: None,
43 page: None,
44 limit: None,
45 }
46 }
47 pub async fn send(&self, client: &Client) -> Result<Vec<PullRequest>> {
49 let owner = &self.owner;
50 let repo = &self.repo;
51 let req = client
52 .get(format!("/repos/{owner}/{repo}/pulls"))
53 .query(self)
54 .build()?;
55 let res = client.make_request(req).await?;
56 client.parse_response(res).await
57 }
58}