Include more information about invalid query parameters

In the /compare response.

This should enable qa.guix.gnu.org to detect when the base revision for a
comparison is unknown.
This commit is contained in:
Christopher Baines 2022-11-17 16:18:28 +00:00
parent cc61bb5f13
commit 9fc5821180

View file

@ -254,6 +254,19 @@
((application/json) ((application/json)
(render-json (render-json
`((error . "invalid query") `((error . "invalid query")
(query_parameters
. ,(map
(match-lambda
((key . val)
(cons key
(match val
(($ <invalid-query-parameter> value message)
`((invalid_value . ,value)
(message . ,(call-with-output-string
(lambda (port)
(sxml->html message port))))))
(val val)))))
query-parameters))
(base_job . ,base-job) (base_job . ,base-job)
(target_job . ,target-job)))) (target_job . ,target-job))))
(else (else
@ -433,20 +446,6 @@
(render-json (render-json
'((error . "invalid query")))) '((error . "invalid query"))))
(else (else
(letpar& ((base-job
(match (assq-ref query-parameters 'base_commit)
(($ <invalid-query-parameter> value)
(with-thread-postgresql-connection
(lambda (conn)
(select-job-for-commit conn value))))
(_ #f)))
(target-job
(match (assq-ref query-parameters 'target_commit)
(($ <invalid-query-parameter> value)
(with-thread-postgresql-connection
(lambda (conn)
(select-job-for-commit conn value))))
(_ #f))))
(render-html (render-html
#:sxml (compare query-parameters #:sxml (compare query-parameters
'datetime 'datetime
@ -456,7 +455,7 @@
#f #f
#f #f
#f #f
#f))))) #f))))
(let ((base-branch (assq-ref query-parameters 'base_branch)) (let ((base-branch (assq-ref query-parameters 'base_branch))
(base-datetime (assq-ref query-parameters 'base_datetime)) (base-datetime (assq-ref query-parameters 'base_datetime))