aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator
diff options
context:
space:
mode:
Diffstat (limited to 'guix-build-coordinator')
-rw-r--r--guix-build-coordinator/client-communication.scm16
-rw-r--r--guix-build-coordinator/datastore.scm6
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm12
3 files changed, 33 insertions, 1 deletions
diff --git a/guix-build-coordinator/client-communication.scm b/guix-build-coordinator/client-communication.scm
index 8c4d1fc..3254a9f 100644
--- a/guix-build-coordinator/client-communication.scm
+++ b/guix-build-coordinator/client-communication.scm
@@ -416,6 +416,14 @@
(or (and=> (assq-ref query-parameters 'priority_lt)
string->number)
'unset)
+ #:created-at->
+ (or (and=> (assq-ref query-parameters 'created_at_gt)
+ datastore-validate-datetime-string)
+ 'unset)
+ #:created-at-<
+ (or (and=> (assq-ref query-parameters 'created_at_lt)
+ datastore-validate-datetime-string)
+ 'unset)
#:relationship
(or (and=> (assq-ref query-parameters 'relationship)
string->symbol)
@@ -874,6 +882,8 @@
(canceled 'unset)
(priority-> 'unset)
(priority-< 'unset)
+ (created-at-> 'unset)
+ (created-at-< 'unset)
(relationship 'unset)
(after-id #f)
(limit #f))
@@ -922,6 +932,12 @@
,@(if (number? priority-<)
(list (simple-format #f "priority_lt=~A" priority-<))
'())
+ ,@(if (string? created-at->)
+ (list (simple-format #f "created_at_gt=~A" created-at->))
+ '())
+ ,@(if (string? created-at-<)
+ (list (simple-format #f "created_at_lt=~A" created-at-<))
+ '())
,@(if (and relationship (not (eq? 'unset relationship)))
(list (simple-format #f "relationship=~A" relationship))
'())
diff --git a/guix-build-coordinator/datastore.scm b/guix-build-coordinator/datastore.scm
index ac0d01b..ae65b7d 100644
--- a/guix-build-coordinator/datastore.scm
+++ b/guix-build-coordinator/datastore.scm
@@ -6,7 +6,8 @@
#:use-module (guix-build-coordinator datastore postgresql)
#:duplicates (merge-generics)
#:export (database-uri->datastore
- datastore-find-build-output))
+ datastore-find-build-output
+ datastore-validate-datetime-string))
(re-export datastore-optimize)
(re-export datastore-spawn-fibers)
@@ -123,3 +124,6 @@
(assq-ref output 'output)
#f))
outputs)))
+
+(define (datastore-validate-datetime-string s)
+ (strftime "%F %T" (car (strptime "%F %T" s))))
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm
index ef66a2c..556f36f 100644
--- a/guix-build-coordinator/datastore/sqlite.scm
+++ b/guix-build-coordinator/datastore/sqlite.scm
@@ -2445,6 +2445,8 @@ WHERE uuid = :uuid"
(canceled 'unset)
(priority-> 'unset)
(priority-< 'unset)
+ (created-at-> 'unset)
+ (created-at-< 'unset)
(after-id #f)
(limit #f)
;; other-builds-dependent or no-dependent-builds
@@ -2529,6 +2531,8 @@ SELECT id FROM tags WHERE key = :key"
(not (null? not-systems))
(not (eq? priority-> 'unset))
(not (eq? priority-< 'unset))
+ (not (eq? created-at-> 'unset))
+ (not (eq? created-at-< 'unset))
(not (eq? processed 'unset))
(not (eq? canceled 'unset))
(not (eq? relationship 'unset))
@@ -2579,6 +2583,14 @@ INNER JOIN derivations
(list
(simple-format #f "priority < ~A" priority-<))
'())
+ (if (string? created-at->)
+ (list
+ (simple-format #f "created_at > '~A'" created-at->))
+ '())
+ (if (string? created-at-<)
+ (list
+ (simple-format #f "created_at < '~A'" created-at-<))
+ '())
(cond
((eq? processed #t) '("processed = 1"))
((eq? processed #f) '("processed = 0"))