libverify_github/
pr_api.rs1use anyhow::{Context, Result};
2
3use crate::client::GitHubClient;
4use crate::types::SearchPrItem;
5
6pub fn search_merged_prs(
8 client: &GitHubClient,
9 owner: &str,
10 repo: &str,
11 since: &str,
12 until: &str,
13) -> Result<Vec<u32>> {
14 let path = format!(
15 "/search/issues?q=repo:{owner}/{repo}+is:pr+is:merged+merged:{since}..{until}&sort=created&per_page=100"
16 );
17 let items: Vec<SearchPrItem> = client
18 .paginate_search(&path)
19 .context("failed to search merged PRs by date")?;
20 Ok(items.into_iter().map(|item| item.number).collect())
21}
22
23pub fn search_merged_prs_in_range(
25 client: &GitHubClient,
26 owner: &str,
27 repo: &str,
28 start: u32,
29 end: u32,
30) -> Result<Vec<u32>> {
31 let path = format!(
32 "/search/issues?q=repo:{owner}/{repo}+is:pr+is:merged+number:{start}..{end}&sort=created&per_page=100"
33 );
34 let items: Vec<SearchPrItem> = client
35 .paginate_search(&path)
36 .context("failed to search merged PRs by number range")?;
37 Ok(items.into_iter().map(|item| item.number).collect())
38}