guix-commits
[Top][All Lists]
Advanced

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

03/06: Add a couple of options to select-derivation-outputs-in-revision


From: Christopher Baines
Subject: 03/06: Add a couple of options to select-derivation-outputs-in-revision
Date: Sun, 3 May 2020 16:30:01 -0400 (EDT)

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

commit 3cc14ae03a4f3782cd61756cda772ba5cb4aee4b
Author: Christopher Baines <address@hidden>
AuthorDate: Sun May 3 21:20:53 2020 +0100

    Add a couple of options to select-derivation-outputs-in-revision
    
    To filter outputs by whether particular substitute servers have a 
substitute.
---
 guix-data-service/model/derivation.scm | 36 ++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/guix-data-service/model/derivation.scm 
b/guix-data-service/model/derivation.scm
index 693e513..a19b336 100644
--- a/guix-data-service/model/derivation.scm
+++ b/guix-data-service/model/derivation.scm
@@ -454,6 +454,8 @@ ORDER BY derivations.file_name
                                                 #:key
                                                 search-query
                                                 output-consistency
+                                                nars-from-build-servers
+                                                no-nars-from-build-servers
                                                 system
                                                 target
                                                 limit-results
@@ -517,6 +519,40 @@ WHERE guix_revisions.commit = $1
                               query count))
              criteria
              (iota (length criteria) 2))))
+     (if (list? nars-from-build-servers)
+         (string-append
+          "
+AND ARRAY[" (string-join (map number->string nars-from-build-servers)
+                         ", ")
+"]::integer[] <@ COALESCE(( -- contained by
+  SELECT ARRAY_AGG(narinfo_fetch_records.build_server_id)
+  FROM nars
+  INNER JOIN narinfo_signatures
+    ON nars.id = narinfo_signatures.nar_id
+  INNER JOIN narinfo_signature_data
+    ON narinfo_signature_data.id = narinfo_signatures.narinfo_signature_data_id
+  INNER JOIN narinfo_fetch_records
+    ON narinfo_signature_data.id = 
narinfo_fetch_records.narinfo_signature_data_id
+  WHERE nars.store_path = derivation_output_details.path
+), ARRAY[]::integer[])")
+         "")
+     (if (list? no-nars-from-build-servers)
+         (string-append
+          "
+AND NOT ARRAY[" (string-join (map number->string no-nars-from-build-servers)
+                             ", ")
+"]::integer[] && COALESCE((
+  SELECT ARRAY_AGG(narinfo_fetch_records.build_server_id)
+  FROM nars
+  INNER JOIN narinfo_signatures
+    ON nars.id = narinfo_signatures.nar_id
+  INNER JOIN narinfo_signature_data
+    ON narinfo_signature_data.id = narinfo_signatures.narinfo_signature_data_id
+  INNER JOIN narinfo_fetch_records
+    ON narinfo_signature_data.id = 
narinfo_fetch_records.narinfo_signature_data_id
+  WHERE nars.store_path = derivation_output_details.path
+), ARRAY[]::integer[])")
+         "")
      (cond
       ((string=? output-consistency "any")
        "")



reply via email to

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