Provide more information about revision processing errors

In the compare package derivations response.
This commit is contained in:
Christopher Baines 2023-06-15 11:36:46 +01:00
parent f7b823cfd9
commit 044a905c1d
1 changed files with 40 additions and 22 deletions

View File

@ -648,28 +648,46 @@
'(application/json text/html)
mime-types)
((application/json)
(render-json
`((error . "invalid query")
(query_parameters
.
,(map
(match-lambda
((name . val)
(cons
name
(cond
((invalid-query-parameter? val)
`((invalid
. ,(with-output-to-string
(lambda ()
(sxml->html
(invalid-query-parameter-message
val)))))
(value . ,(invalid-query-parameter-value val))))
((list? val)
(list->vector val))
(else val)))))
query-parameters)))))
(letpar& ((base-job
(and=> (match (assq-ref query-parameters 'base_commit)
(($ <invalid-query-parameter> value)
(and (string? value) value))
((? string? value) value)
(_ #f))
(lambda (commit)
(with-thread-postgresql-connection
(lambda (conn)
(select-job-for-commit conn commit))))))
(target-job
(and=> (match (assq-ref query-parameters 'target_commit)
(($ <invalid-query-parameter> value)
(and (string? value) value))
((? string? value) value)
(_ #f))
(lambda (commit)
(with-thread-postgresql-connection
(lambda (conn)
(select-job-for-commit conn commit)))))))
(render-json
`((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))))))
((? list? val)
(list->vector val))
(val val)))))
query-parameters))
(base_job . ,base-job)
(target_job . ,target-job)))))
(else
(letpar& ((systems
(with-thread-postgresql-connection