[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