diff options
Diffstat (limited to 'guix-build-coordinator')
-rw-r--r-- | guix-build-coordinator/client-communication.scm | 16 | ||||
-rw-r--r-- | guix-build-coordinator/datastore.scm | 6 | ||||
-rw-r--r-- | guix-build-coordinator/datastore/sqlite.scm | 12 |
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")) |