diff options
author | Christopher Baines <mail@cbaines.net> | 2023-06-15 11:36:46 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2023-06-15 11:36:46 +0100 |
commit | 044a905c1d75e9a989b457c203c4d6a65d29fbe6 (patch) | |
tree | 11bc9aa5a29cef6ec36a0053aa1c3bd30e95c5cf /guix-data-service/web | |
parent | f7b823cfd951f7832412832db05fd5419645f90e (diff) | |
download | data-service-044a905c1d75e9a989b457c203c4d6a65d29fbe6.tar data-service-044a905c1d75e9a989b457c203c4d6a65d29fbe6.tar.gz |
Provide more information about revision processing errors
In the compare package derivations response.
Diffstat (limited to 'guix-data-service/web')
-rw-r--r-- | guix-data-service/web/compare/controller.scm | 62 |
1 files changed, 40 insertions, 22 deletions
diff --git a/guix-data-service/web/compare/controller.scm b/guix-data-service/web/compare/controller.scm index 366a0bd..3d96aa4 100644 --- a/guix-data-service/web/compare/controller.scm +++ b/guix-data-service/web/compare/controller.scm @@ -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 |