Add pull request milestone features
This commit is contained in:
@@ -159,29 +159,48 @@ pub async fn load_milestone(
|
||||
apis::issue_api::issue_get_milestone(&configuration, owner, repository, &id.to_string())
|
||||
.await
|
||||
.map_err(|error| error.to_string())?;
|
||||
let issues = apis::issue_api::issue_list_issues(
|
||||
&configuration,
|
||||
owner,
|
||||
repository,
|
||||
Some("all"),
|
||||
None,
|
||||
None,
|
||||
Some("issues"),
|
||||
milestone.title.as_deref(),
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
Some(1),
|
||||
Some(100),
|
||||
)
|
||||
.await
|
||||
.map_err(|error| error.to_string())?;
|
||||
Ok(MilestoneDetails { milestone, issues })
|
||||
let load = |kind| {
|
||||
apis::issue_api::issue_list_issues(
|
||||
&configuration,
|
||||
owner,
|
||||
repository,
|
||||
Some("all"),
|
||||
None,
|
||||
None,
|
||||
Some(kind),
|
||||
milestone.title.as_deref(),
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
Some(1),
|
||||
Some(100),
|
||||
)
|
||||
};
|
||||
let (issues, pulls) = tokio::join!(load("issues"), load("pulls"));
|
||||
let mut pulls = pulls.map_err(|error| error.to_string())?;
|
||||
for pull in &mut pulls {
|
||||
pull.repository.get_or_insert_with(|| {
|
||||
Box::new(models::RepositoryMeta {
|
||||
name: Some(repository.into()),
|
||||
owner: Some(owner.into()),
|
||||
..Default::default()
|
||||
})
|
||||
});
|
||||
}
|
||||
Ok(MilestoneDetails {
|
||||
milestone,
|
||||
issues: issues.map_err(|error| error.to_string())?,
|
||||
pulls,
|
||||
})
|
||||
}
|
||||
|
||||
pub async fn load_pulls(server: &Server, status: &str) -> Result<Vec<models::Issue>, String> {
|
||||
pub async fn load_pulls(
|
||||
server: &Server,
|
||||
status: &str,
|
||||
milestone: &str,
|
||||
) -> Result<Vec<models::Issue>, String> {
|
||||
let client =
|
||||
Client::new(&server.url, Some(&server.token)).map_err(|error| error.to_string())?;
|
||||
let configuration = client.configuration();
|
||||
@@ -197,7 +216,7 @@ pub async fn load_pulls(server: &Server, status: &str) -> Result<Vec<models::Iss
|
||||
&configuration,
|
||||
Some(status),
|
||||
None,
|
||||
None,
|
||||
(!milestone.is_empty()).then_some(milestone),
|
||||
None,
|
||||
None,
|
||||
Some("pulls"),
|
||||
@@ -223,6 +242,20 @@ pub async fn load_pulls(server: &Server, status: &str) -> Result<Vec<models::Iss
|
||||
Ok(pulls)
|
||||
}
|
||||
|
||||
pub async fn load_pull_milestones(server: &Server) -> Result<Vec<String>, String> {
|
||||
let (open, closed) = tokio::try_join!(
|
||||
load_pulls(server, "open", ""),
|
||||
load_pulls(server, "closed", "")
|
||||
)?;
|
||||
Ok(open
|
||||
.into_iter()
|
||||
.chain(closed)
|
||||
.filter_map(|pull| pull.milestone?.title)
|
||||
.collect::<BTreeSet<_>>()
|
||||
.into_iter()
|
||||
.collect())
|
||||
}
|
||||
|
||||
pub async fn load_branches(
|
||||
server: &Server,
|
||||
owner: &str,
|
||||
|
||||
Reference in New Issue
Block a user