aboutsummaryrefslogtreecommitdiff
path: root/guix-qa-frontpage/mumi.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2022-10-25 20:28:15 +0100
committerChristopher Baines <mail@cbaines.net>2022-10-25 20:28:15 +0100
commit886295cbd1dd00f5a5310f82140c6b12544356c2 (patch)
treee5ab1a14e3de16451dae701510a0bcbf04551691 /guix-qa-frontpage/mumi.scm
parent00709634cf34eff33fe5675858305188248b1862 (diff)
downloadqa-frontpage-886295cbd1dd00f5a5310f82140c6b12544356c2.tar
qa-frontpage-886295cbd1dd00f5a5310f82140c6b12544356c2.tar.gz
Get more data from mumi
Query the open status so that Patchwork isn't relied on for that. Also switch to querying the tags in bulk.
Diffstat (limited to 'guix-qa-frontpage/mumi.scm')
-rw-r--r--guix-qa-frontpage/mumi.scm47
1 files changed, 46 insertions, 1 deletions
diff --git a/guix-qa-frontpage/mumi.scm b/guix-qa-frontpage/mumi.scm
index d1d7839..bef358d 100644
--- a/guix-qa-frontpage/mumi.scm
+++ b/guix-qa-frontpage/mumi.scm
@@ -18,8 +18,13 @@
(define-module (guix-qa-frontpage mumi)
#:use-module (srfi srfi-1)
+ #:use-module (ice-9 match)
#:use-module (kolam http)
- #:export (mumi-issue-tags))
+ #:use-module ((guix-data-service utils) #:select (chunk-for-each!))
+ #:export (mumi-issue-tags
+ mumi-issue-open?
+
+ mumi-bulk-issues))
(define (mumi-issue-tags number)
(with-exception-handler
@@ -37,3 +42,43 @@
(assoc-ref (cdr (first response))
"tags"))))
#:unwind? #t))
+
+(define (mumi-issue-open? number)
+ (let ((response
+ (graphql-http-get "https://issues.guix.gnu.org/graphql"
+ `(document (query (#(issue #:number ,number) open))))))
+ (assoc-ref (cdr (first response))
+ "open")))
+
+(define (mumi-bulk-issues numbers)
+ (let ((number-to-data
+ (make-hash-table)))
+
+ (chunk-for-each!
+ (lambda (chunk)
+ (let ((response
+ (graphql-http-get
+ "https://issues.guix.gnu.org/graphql"
+ `(document
+ ,@(map (lambda (number)
+ `(query (#(issue #:number ,number)
+ number title open severity tags)))
+ chunk)))))
+
+ (for-each
+ (lambda (res)
+ (let ((data (cdr res)))
+ (hash-set! number-to-data
+ (assoc-ref data "number")
+ `((title . ,(assoc-ref data "title"))
+ (open? . ,(assoc-ref data "open"))
+ (tags . ,(vector->list
+ (assoc-ref data "tags")))
+ (severity . ,(assoc-ref data "severity"))))))
+ response)))
+ 30
+ (list-copy numbers))
+
+ (map (lambda (number)
+ (hash-ref number-to-data number))
+ numbers)))