guix-commits
[Top][All Lists]
Advanced

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

03/04: Support querying for outputs that have had successful builds


From: Christopher Baines
Subject: 03/04: Support querying for outputs that have had successful builds
Date: Sat, 10 Apr 2021 05:10:37 -0400 (EDT)

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

commit f37ae27ca6bd43532708f54d413b5f09a8c1f946
Author: Christopher Baines <mail@cbaines.net>
AuthorDate: Sat Apr 10 10:08:25 2021 +0100

    Support querying for outputs that have had successful builds
---
 guix-data-service/model/nar.scm | 35 +++++++++++++++++++++++++++++------
 1 file changed, 29 insertions(+), 6 deletions(-)

diff --git a/guix-data-service/model/nar.scm b/guix-data-service/model/nar.scm
index b444ed5..e493abb 100644
--- a/guix-data-service/model/nar.scm
+++ b/guix-data-service/model/nar.scm
@@ -17,6 +17,7 @@
 
 (define-module (guix-data-service model nar)
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-19)
   #:use-module (ice-9 match)
   #:use-module (web uri)
   #:use-module (squee)
@@ -371,17 +372,34 @@ ORDER BY COUNT(*) DESC")
                  (string->number count))))
         (exec-query-with-null-handling conn query (list revision-commit)))))
 
-(define (select-outputs-without-known-nar-entries
-         conn
-         build-server-id
-         guix-revision-commits)
+(define* (select-outputs-without-known-nar-entries
+          conn
+          build-server-id
+          guix-revision-commits
+          #:key
+          build-success-after)
   (define query
     (string-append
      "
 SELECT DISTINCT derivation_output_details.path, derivation_output_details.id
 FROM derivation_outputs
 INNER JOIN derivation_output_details
-  ON derivation_outputs.derivation_output_details_id = 
derivation_output_details.id
+  ON derivation_outputs.derivation_output_details_id =
+     derivation_output_details.id"
+     (if build-success-after
+         "
+INNER JOIN derivation_output_details_sets
+  ON ARRAY[derivation_output_details.id] <@
+     derivation_output_details_sets.derivation_output_details_ids
+INNER JOIN builds
+  ON builds.build_server_id = $1
+ AND builds.derivation_output_details_set_id = 
derivation_output_details_sets.id
+INNER JOIN latest_build_status
+  ON latest_build_status.build_id = builds.id
+ AND latest_build_status.status = 'succeeded'
+ AND latest_build_status.timestamp > $2"
+         "")
+     "
 WHERE derivation_output_details.path NOT IN (
   -- Ignore outputs that have already been fetched
   SELECT store_path
@@ -420,7 +438,12 @@ WHERE derivation_output_details.path NOT IN (
 ORDER BY derivation_output_details.id DESC
 LIMIT 100000"))
 
-  (map car (exec-query conn query (list (number->string build-server-id)))))
+  (map car (exec-query conn
+                       query
+                       `(,(number->string build-server-id)
+                         ,@(if build-success-after
+                               (list (date->string build-success-after "~1 
~3"))
+                               '())))))
 
 (define (select-nars-for-output conn output-file-name)
   (define query



reply via email to

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