Add issue label and milestone filters

This commit is contained in:
Georg Bauer
2026-07-31 13:42:06 +02:00
parent 6374636b04
commit 6eb27537e8
9 changed files with 492 additions and 18 deletions

View File

@@ -61,18 +61,21 @@ pub async fn load_issues(
owner: &str,
repository: &str,
status: &str,
labels: &[String],
milestone: &str,
) -> Result<Vec<models::Issue>, String> {
let client =
Client::new(&server.url, Some(&server.token)).map_err(|error| error.to_string())?;
let labels = (!labels.is_empty()).then(|| labels.join(","));
apis::issue_api::issue_list_issues(
&client.configuration(),
owner,
repository,
Some(status),
None,
labels.as_deref(),
None,
Some("issues"),
None,
(!milestone.is_empty()).then_some(milestone),
None,
None,
None,
@@ -85,6 +88,34 @@ pub async fn load_issues(
.map_err(|error| error.to_string())
}
pub async fn load_labels(
server: &Server,
owner: &str,
repository: &str,
) -> Result<Vec<models::Label>, String> {
let client =
Client::new(&server.url, Some(&server.token)).map_err(|error| error.to_string())?;
let configuration = client.configuration();
let mut labels = Vec::new();
for page in 1.. {
let batch = apis::issue_api::issue_list_labels(
&configuration,
owner,
repository,
Some(page),
Some(100),
)
.await
.map_err(|error| error.to_string())?;
let done = batch.len() < 100;
labels.extend(batch);
if done {
break;
}
}
Ok(labels)
}
pub async fn load_milestones(
server: &Server,
owner: &str,