浏览代码

Move Query to github module

Santiago Pastorino 4 年之前
父节点
当前提交
a08bfa43b9
共有 3 个文件被更改,包括 21 次插入21 次删除
  1. 15 4
      src/github.rs
  2. 4 2
      src/prioritization/config.rs
  3. 2 15
      src/prioritization/mod.rs

+ 15 - 4
src/github.rs

@@ -631,13 +631,17 @@ impl Repository {
         "https://api.github.com"
     }
 
-    pub async fn get_issues(
+    pub async fn get_issues<'a>(
         &self,
         client: &GithubClient,
-        filters: &Vec<(&str, &str)>,
-        include_labels: &Vec<&str>,
-        exclude_labels: &Vec<&str>,
+        query: &Query<'a>,
     ) -> anyhow::Result<Vec<Issue>> {
+        let Query {
+            filters,
+            include_labels,
+            exclude_labels,
+        } = query;
+
         let use_issues = exclude_labels.is_empty() || filters.iter().any(|&(key, _)| key == "no");
         // negating filters can only be handled by the search api
         let url = if use_issues {
@@ -706,6 +710,13 @@ impl Repository {
     }
 }
 
+pub struct Query<'a> {
+    // key/value filter
+    pub filters: Vec<(&'a str, &'a str)>,
+    pub include_labels: Vec<&'a str>,
+    pub exclude_labels: Vec<&'a str>,
+}
+
 #[derive(Debug)]
 pub enum Event {
     IssueComment(IssueCommentEvent),

+ 4 - 2
src/prioritization/config.rs

@@ -1,4 +1,6 @@
-use super::{Meeting, NamedQuery, Query, RepoQuery, Step};
+use crate::github::Query;
+
+use super::{Meeting, NamedQuery, RepoQuery, Step};
 
 pub fn prepare_meeting<'a>() -> Meeting<Step<'a>> {
     Meeting {
@@ -92,7 +94,7 @@ pub fn regressions<'a>() -> Step<'a> {
     queries.push(NamedQuery {
         name: "regressions.stable_to_stable",
         query: Query {
-            filters: vec![("state", "open"), ("per_page","100")],
+            filters: vec![("state", "open"), ("per_page", "100")],
             include_labels: vec!["regression-from-stable-to-stable"],
             exclude_labels: vec![
                 "P-critical",

+ 2 - 15
src/prioritization/mod.rs

@@ -5,7 +5,7 @@ use std::env;
 use std::fs::File;
 use std::io::Read;
 
-use crate::github::{GithubClient, Issue, Repository};
+use crate::github::{GithubClient, Issue, Query, Repository};
 
 pub mod config;
 
@@ -33,12 +33,6 @@ pub struct NamedQuery<'a> {
     pub query: Query<'a>,
 }
 
-pub struct Query<'a> {
-    pub filters: Vec<(&'a str, &'a str)>,
-    pub include_labels: Vec<&'a str>,
-    pub exclude_labels: Vec<&'a str>,
-}
-
 pub trait Template {
     fn render(&self) -> String;
 }
@@ -64,14 +58,7 @@ impl<'a> Action for Step<'a> {
             };
 
             for NamedQuery { name, query } in queries {
-                let issues_search_result = repository
-                    .get_issues(
-                        &gh,
-                        &query.filters,
-                        &query.include_labels,
-                        &query.exclude_labels,
-                    )
-                    .await;
+                let issues_search_result = repository.get_issues(&gh, &query).await;
 
                 match issues_search_result {
                     Ok(issues) => map.push((*name, issues)),