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,30 +446,16 @@
(render-json (render-json
'((error . "invalid query")))) '((error . "invalid query"))))
(else (else
(letpar& ((base-job (render-html
(match (assq-ref query-parameters 'base_commit) #:sxml (compare query-parameters
(($ <invalid-query-parameter> value) 'datetime
(with-thread-postgresql-connection #f
(lambda (conn) #f
(select-job-for-commit conn value)))) #f
(_ #f))) #f
(target-job #f
(match (assq-ref query-parameters 'target_commit) #f
(($ <invalid-query-parameter> value) #f))))
(with-thread-postgresql-connection
(lambda (conn)
(select-job-for-commit conn value))))
(_ #f))))
(render-html
#:sxml (compare query-parameters
'datetime
#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))