aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cuirass/database.scm24
1 files changed, 11 insertions, 13 deletions
diff --git a/src/cuirass/database.scm b/src/cuirass/database.scm
index 361584e..5a5b61b 100644
--- a/src/cuirass/database.scm
+++ b/src/cuirass/database.scm
@@ -34,9 +34,12 @@
;; Macros.
with-database))
-(define (sqlite-exec db sql)
- "Wrap 'sqlite-prepare', 'sqlite-step', and 'sqlite-finalize'."
- (let ((stmt (sqlite-prepare db sql)))
+(define (sqlite-exec db msg . args)
+ "Wrap 'sqlite-prepare', 'sqlite-step', and 'sqlite-finalize'. Send message
+MSG to database DB. MSG can contain '~A' and '~S' escape characters which
+will be replaced by ARGS."
+ (let* ((sql (apply simple-format #f msg args))
+ (stmt (sqlite-prepare db sql)))
(sqlite-step stmt)
(sqlite-finalize stmt)))
@@ -86,11 +89,9 @@ database object."
(define (db-add-evaluation db job)
"Store a derivation result in database DB and return its ID."
- (sqlite-exec
- db
- (format #f "insert into build (job_spec, drv) values ('~A', '~A');"
- (assq-ref job #:job-name)
- (assq-ref job #:derivation)))
+ (sqlite-exec db "insert into build (job_spec, drv) values ('~A', '~A');"
+ (assq-ref job #:job-name)
+ (assq-ref job #:derivation))
(let* ((stmt (sqlite-prepare db "select last_insert_rowid() from build;"))
(res (sqlite-step stmt)))
(sqlite-finalize stmt)
@@ -107,8 +108,7 @@ database object."
(define (db-delete-evaluation db id)
"Delete a job in database DB which corresponds to ID."
- (sqlite-exec db
- (format #f "delete from build where id=~A;" id)))
+ (sqlite-exec db "delete from build where id=~A;" id))
(define-syntax-rule (with-database db body ...)
"Run BODY with a connection to the database which is bound to DB in BODY."
@@ -135,6 +135,4 @@ string."
(seek log 0 SEEK_SET)
(read-quoted-string log))
(else #f))))
- (sqlite-exec db
- (format #f "update build set log='~A' where id=~A;"
- log* id))))
+ (sqlite-exec db "update build set log='~A' where id=~A;" log* id)))