aboutsummaryrefslogtreecommitdiff
path: root/guix-data-service/model/build-status.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix-data-service/model/build-status.scm')
-rw-r--r--guix-data-service/model/build-status.scm84
1 files changed, 63 insertions, 21 deletions
diff --git a/guix-data-service/model/build-status.scm b/guix-data-service/model/build-status.scm
index 26efde1..09f8623 100644
--- a/guix-data-service/model/build-status.scm
+++ b/guix-data-service/model/build-status.scm
@@ -1,8 +1,12 @@
(define-module (guix-data-service model build-status)
+ #:use-module (ice-9 match)
#:use-module (squee)
+ #:use-module (guix-data-service model utils)
#:export (build-statuses
build-status-strings
- insert-build-status))
+ select-build-statuses-by-build-id
+ insert-build-status
+ insert-build-statuses))
(define build-statuses
'((-2 . "scheduled")
@@ -16,25 +20,63 @@
(define build-status-strings
(map cdr build-statuses))
-(define (insert-build-status conn internal-build-id
- starttime stoptime status)
- (exec-query conn
+(define (select-build-statuses-by-build-id conn
+ build-id
+ build-server-id)
+ (define query
+ "
+SELECT timestamp, status
+FROM build_status
+INNER JOIN builds ON builds.id = build_status.build_id
+WHERE builds.build_server_id = $1 AND
+ builds.id = $2")
+
+ (exec-query conn query (list (number->string build-server-id)
+ (number->string build-id))))
+
+(define (insert-build-status conn build-id timestamp status)
+ (define query
+ (string-append
+ "
+INSERT INTO build_status (build_id, timestamp, status)
+VALUES ("
+ (number->string build-id)
+ ", "
+ (string-append "to_timestamp("
+ (number->string timestamp)
+ ")")
+ ", "
+ (quote-string status)
+ ")"))
+
+ (exec-query conn query '()))
+
+(define (insert-build-statuses conn build-ids data)
+ (define query
+ (string-append
+ "
+INSERT INTO build_status (build_id, timestamp, status)
+VALUES "
+ (string-join
+ (map (match-lambda*
+ (((timestamp status) build-id)
+ (unless (member status build-status-strings)
+ (throw
+ 'invalid-status
+ status))
+
(string-append
- "INSERT INTO build_status "
- "(internal_build_id, starttime, stoptime, status) "
- "VALUES "
- "(" internal-build-id ", "
- (if (eq? starttime 0)
- "NULL"
- (string-append "to_timestamp("
- (number->string starttime)
- ")"))
- ", "
- (if (eq? stoptime 0)
- "NULL"
- (string-append "to_timestamp("
- (number->string stoptime)
- ")"))
- ", "
- "'" status "'"
+ "("
+ (number->string build-id)
+ ","
+ (string-append "to_timestamp("
+ (number->string timestamp)
+ ")")
+ ","
+ (quote-string status)
")")))
+ data
+ build-ids)
+ ", ")))
+
+ (exec-query conn query '()))