guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/03: Don't show all results on the compare package derivation page


From: Christopher Baines
Subject: 02/03: Don't show all results on the compare package derivation page
Date: Fri, 20 Nov 2020 14:37:40 -0500 (EST)

cbaines pushed a commit to branch master
in repository data-service.

commit 65507aaac1d7534f58908bde967d8c209e9999f4
Author: Christopher Baines <mail@cbaines.net>
AuthorDate: Fri Nov 20 19:33:16 2020 +0000

    Don't show all results on the compare package derivation page
    
    By default. For comparisons involving lots of changed derivations, the page
    can take too long to render.
---
 guix-data-service/web/compare/controller.scm | 50 ++++++++++++++++++++--------
 guix-data-service/web/compare/html.scm       | 11 ++++++
 2 files changed, 47 insertions(+), 14 deletions(-)

diff --git a/guix-data-service/web/compare/controller.scm 
b/guix-data-service/web/compare/controller.scm
index b41090c..df7e89a 100644
--- a/guix-data-service/web/compare/controller.scm
+++ b/guix-data-service/web/compare/controller.scm
@@ -115,14 +115,22 @@
                                   parsed-query-parameters)))
     (('GET "compare" "package-derivations")
      (let* ((parsed-query-parameters
-             (parse-query-parameters
-              request
-              `((base_commit   ,parse-commit #:required)
-                (target_commit ,parse-commit #:required)
-                (system        ,parse-system #:multi-value)
-                (target        ,parse-target #:multi-value)
-                (build_status  ,parse-build-status #:multi-value)
-                (build_change  ,parse-build-change)))))
+             (guard-against-mutually-exclusive-query-parameters
+              (parse-query-parameters
+               request
+               `((base_commit   ,parse-commit #:required)
+                 (target_commit ,parse-commit #:required)
+                 (system        ,parse-system #:multi-value)
+                 (target        ,parse-target #:multi-value)
+                 (build_status  ,parse-build-status #:multi-value)
+                 (build_change  ,parse-build-change)
+                 (after_name    ,identity)
+                 (limit_results ,parse-result-limit
+                                #:no-default-when (all_results)
+                                #:default 40)
+                 (all_results   ,parse-checkbox-value)))
+              '((limit_results all_results)))))
+
        (render-compare/package-derivations mime-types
                                            parsed-query-parameters)))
     (('GET "compare-by-datetime" "package-derivations")
@@ -137,9 +145,15 @@
                  (system          ,parse-system #:multi-value)
                  (target          ,parse-target #:multi-value)
                  (build_status    ,parse-build-status #:multi-value)
-                 (build-change    ,parse-build-change)))
+                 (build-change    ,parse-build-change)
+                 (after_name    ,identity)
+                 (limit_results ,parse-result-limit
+                                #:no-default-when (all_results)
+                                #:default 40)
+                 (all_results   ,parse-checkbox-value)))
               '((base_commit base_datetime)
-                (target_commit target_datetime)))))
+                (target_commit target_datetime)
+                (limit_results all_results)))))
        (render-compare-by-datetime/package-derivations mime-types
                                                        
parsed-query-parameters)))
     (('GET "compare" "packages")
@@ -550,7 +564,9 @@
             (targets        (assq-ref query-parameters 'target))
             (build-change   (and=>
                              (assq-ref query-parameters 'build_change)
-                             string->symbol)))
+                             string->symbol))
+            (after-name     (assq-ref query-parameters 'after_name))
+            (limit-results  (assq-ref query-parameters 'limit_results)))
         (letpar& ((data
                    (with-thread-postgresql-connection
                     (lambda (conn)
@@ -560,7 +576,9 @@
                        (commit->revision-id conn target-commit)
                        #:systems systems
                        #:targets targets
-                       #:build-change build-change))))
+                       #:build-change build-change
+                       #:after-name after-name
+                       #:limit-results limit-results))))
                   (build-server-urls
                    (with-thread-postgresql-connection
                     select-build-server-urls-by-id)))
@@ -623,7 +641,9 @@
             (targets         (assq-ref query-parameters 'target))
             (build-change    (and=>
                               (assq-ref query-parameters 'build_change)
-                              string->symbol)))
+                              string->symbol))
+            (after-name     (assq-ref query-parameters 'after_name))
+            (limit-results  (assq-ref query-parameters 'limit_results)))
         (letpar&
             ((base-revision-details
               (with-thread-postgresql-connection
@@ -647,7 +667,9 @@
                     (first target-revision-details)
                     #:systems systems
                     #:targets targets
-                    #:build-change build-change)))))
+                    #:build-change build-change
+                    #:after-name after-name
+                    #:limit-results limit-results)))))
             (let ((names-and-versions
                    (package-derivation-data->names-and-versions data)))
               (let-values
diff --git a/guix-data-service/web/compare/html.scm 
b/guix-data-service/web/compare/html.scm
index c813340..2fea059 100644
--- a/guix-data-service/web/compare/html.scm
+++ b/guix-data-service/web/compare/html.scm
@@ -685,6 +685,17 @@ and target derivations")
                             "No base and target derivation to compare, or not
 enough builds to determine a change")))
             #:allow-selecting-multiple-options #f)
+          ,(form-horizontal-control
+            "After name" query-parameters
+            #:help-text
+            "List packages that are alphabetically after the given name.")
+          ,(form-horizontal-control
+            "Limit results" query-parameters
+            #:help-text "The maximum number of results to return.")
+          ,(form-horizontal-control
+            "All results" query-parameters
+            #:type "checkbox"
+            #:help-text "Return all results.")
           (div (@ (class "form-group form-group-lg"))
                (div (@ (class "col-sm-offset-2 col-sm-10"))
                     (button (@ (type "submit")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]