diff options
author | Christopher Baines <mail@cbaines.net> | 2022-10-25 20:28:15 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2022-10-25 20:28:15 +0100 |
commit | 886295cbd1dd00f5a5310f82140c6b12544356c2 (patch) | |
tree | e5ab1a14e3de16451dae701510a0bcbf04551691 /guix-qa-frontpage/mumi.scm | |
parent | 00709634cf34eff33fe5675858305188248b1862 (diff) | |
download | qa-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.scm | 47 |
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))) |