diff options
author | Christopher Baines <mail@cbaines.net> | 2019-08-06 10:22:57 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2019-08-06 10:22:57 +0100 |
commit | 3849bb79c5453fb10f66549a0a226a4fe4749fdb (patch) | |
tree | 5a6644e52466b4abf24b8103dc4a0e7cb2b31919 /guix-data-service | |
parent | 36a16d356f526bcc3425147ffc6a36df1c1a1782 (diff) | |
download | data-service-3849bb79c5453fb10f66549a0a226a4fe4749fdb.tar data-service-3849bb79c5453fb10f66549a0a226a4fe4749fdb.tar.gz |
Support filtering by systems and targets when comparing derivations
Diffstat (limited to 'guix-data-service')
-rw-r--r-- | guix-data-service/comparison.scm | 42 | ||||
-rw-r--r-- | guix-data-service/web/controller.scm | 4 |
2 files changed, 38 insertions, 8 deletions
diff --git a/guix-data-service/comparison.scm b/guix-data-service/comparison.scm index 18f7c35..19551a6 100644 --- a/guix-data-service/comparison.scm +++ b/guix-data-service/comparison.scm @@ -15,9 +15,37 @@ package-data-version-changes package-data-derivation-changes)) -(define (package-differences-data conn base_guix_revision_id target_guix_revision_id) +(define* (package-differences-data conn + base_guix_revision_id + target_guix_revision_id + #:key + (systems #f) + (targets #f)) + (define extra-constraints + (string-append + (if systems + (string-append + " AND package_derivations.system IN (" + (string-join (map + (lambda (s) + (string-append "'" s "'")) + systems) + ", ") + ")") + "") + (if targets + (string-append + " AND package_derivations.target IN (" + (string-join (map + (lambda (s) + (string-append "'" s "'")) + targets) + ", ") + ")") + ""))) + (define query - " + (string-append " WITH base_packages AS ( SELECT packages.*, derivations.file_name, package_derivations.system, package_derivations.target @@ -30,8 +58,8 @@ WITH base_packages AS ( SELECT guix_revision_package_derivations.package_derivation_id FROM guix_revision_package_derivations WHERE revision_id = $1 - ) -), target_packages AS ( + )" extra-constraints +"), target_packages AS ( SELECT packages.*, derivations.file_name, package_derivations.system, package_derivations.target FROM packages @@ -43,8 +71,8 @@ WITH base_packages AS ( SELECT guix_revision_package_derivations.package_derivation_id FROM guix_revision_package_derivations WHERE revision_id = $2 - ) -) + )" extra-constraints +") SELECT base_packages.name, base_packages.version, base_packages.package_metadata_id, base_packages.file_name, base_packages.system, base_packages.target, @@ -62,7 +90,7 @@ WHERE target_packages.id IS NULL OR base_packages.id != target_packages.id OR base_packages.file_name != target_packages.file_name -ORDER BY base_packages.name DESC, base_packages.version, target_packages.name, target_packages.version") +ORDER BY base_packages.name DESC, base_packages.version, target_packages.name, target_packages.version")) (exec-query conn query (list base_guix_revision_id target_guix_revision_id))) diff --git a/guix-data-service/web/controller.scm b/guix-data-service/web/controller.scm index 8c4530f..2d1fc72 100644 --- a/guix-data-service/web/controller.scm +++ b/guix-data-service/web/controller.scm @@ -433,7 +433,9 @@ ((data (package-differences-data conn (commit->revision-id conn base-commit) - (commit->revision-id conn target-commit))) + (commit->revision-id conn target-commit) + #:systems systems + #:targets targets)) (names-and-versions (package-data->names-and-versions data))) (let-values |