aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/datastore
diff options
context:
space:
mode:
Diffstat (limited to 'guix-build-coordinator/datastore')
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm30
1 files changed, 24 insertions, 6 deletions
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm
index 69a8931..0f3e5df 100644
--- a/guix-build-coordinator/datastore/sqlite.scm
+++ b/guix-build-coordinator/datastore/sqlite.scm
@@ -1178,17 +1178,26 @@ ORDER BY priority DESC")))
builds)))))
(define-method (datastore-list-unprocessed-builds-with-built-inputs
- (datastore <sqlite-datastore>))
+ (datastore <sqlite-datastore>)
+ created-after)
(call-with-worker-thread
(slot-ref datastore 'worker-reader-thread-channel)
(lambda (db)
(let ((statement
(sqlite-prepare
db
- "
+ (string-append
+ "
SELECT uuid
FROM builds
WHERE processed = 0
+"
+ (if created-after
+ (simple-format
+ #f "AND created_at >= ~A\n"
+ created-after)
+ "")
+ "
EXCEPT
SELECT uuid
FROM builds
@@ -1210,7 +1219,7 @@ EXCEPT
)
EXCEPT
SELECT build_id FROM allocated_builds
-")))
+"))))
(let ((builds (sqlite-map
(match-lambda
(#(uuid) uuid))
@@ -1220,20 +1229,29 @@ EXCEPT
builds)))))
(define-method (datastore-fetch-unprocessed-builds-with-propagated-priorities
- (datastore <sqlite-datastore>))
+ (datastore <sqlite-datastore>)
+ created-after)
(call-with-worker-thread
(slot-ref datastore 'worker-reader-thread-channel)
(lambda (db)
(let ((statement
(sqlite-prepare
db
- "
+ (string-append
+ "
WITH RECURSIVE builds_with_derived_priority(
uuid, derivation_name, derived_priority
) AS (
SELECT builds.uuid, builds.derivation_name, builds.priority
FROM builds
WHERE processed = 0
+"
+ (if created-after
+ (simple-format
+ #f "AND created_at >= ~A\n"
+ created-after)
+ "")
+ "
UNION
SELECT builds.uuid, builds.derivation_name,
max(builds.priority, builds_with_derived_priority.derived_priority)
@@ -1253,7 +1271,7 @@ SELECT builds_with_derived_priority.uuid, MAX(derived_priority)
FROM builds_with_derived_priority
INNER JOIN builds ON builds.uuid = builds_with_derived_priority.uuid
WHERE builds.processed = 0
-GROUP BY builds_with_derived_priority.uuid"
+GROUP BY builds_with_derived_priority.uuid")
#:cache? #t)))
(let ((result (sqlite-fold