Fix the all-results/limit handling in the revision derivatinos controller

This commit is contained in:
Christopher Baines 2019-12-07 19:36:59 +01:00
parent 544f122ff5
commit 05d295d6f0

View file

@ -138,14 +138,22 @@
(('GET "revision" commit-hash "derivations") (('GET "revision" commit-hash "derivations")
(if (guix-commit-exists? conn commit-hash) (if (guix-commit-exists? conn commit-hash)
(let ((parsed-query-parameters (let ((parsed-query-parameters
(parse-query-parameters (guard-against-mutually-exclusive-query-parameters
request (parse-query-parameters
`((system ,parse-system #:multi-value) request
(target ,parse-system #:multi-value) `((system ,parse-system #:multi-value)
(maximum_builds ,parse-number) (target ,parse-system #:multi-value)
(minimum_builds ,parse-number) (maximum_builds ,parse-number)
(after_name ,identity) (minimum_builds ,parse-number)
(limit_results ,parse-number #:default 100))))) (after_name ,identity)
(limit_results ,parse-result-limit
#:no-default-when (all_results)
#:default 100)
(all_results ,parse-checkbox-value)))
;; You can't specify a search query, but then also limit the
;; results by filtering for after a particular package name
'((after_name search_query)
(limit_results all_results)))))
(render-revision-derivations mime-types (render-revision-derivations mime-types
conn conn
@ -521,6 +529,8 @@
#:header-link header-link)))) #:header-link header-link))))
(let* ((limit-results (let* ((limit-results
(assq-ref query-parameters 'limit_results)) (assq-ref query-parameters 'limit_results))
(all-results
(assq-ref query-parameters 'all_results))
(derivations (derivations
(select-derivations-in-revision (select-derivations-in-revision
conn conn
@ -532,8 +542,10 @@
#:limit-results limit-results #:limit-results limit-results
#:after-name (assq-ref query-parameters 'after_name))) #:after-name (assq-ref query-parameters 'after_name)))
(show-next-page? (show-next-page?
(>= (length derivations) (if all-results
limit-results))) #f
(>= (length derivations)
limit-results))))
(case (most-appropriate-mime-type (case (most-appropriate-mime-type
'(application/json text/html) '(application/json text/html)
mime-types) mime-types)