summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cuirass/database.scm12
-rw-r--r--tests/database.scm10
2 files changed, 19 insertions, 3 deletions
diff --git a/src/cuirass/database.scm b/src/cuirass/database.scm
index 5a5b61b..8ce4153 100644
--- a/src/cuirass/database.scm
+++ b/src/cuirass/database.scm
@@ -29,6 +29,7 @@
db-delete-evaluation
db-add-build-log
read-sql-file
+ sqlite-exec
;; Parameters.
%package-database
;; Macros.
@@ -39,9 +40,14 @@
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)))
+ (stmt (sqlite-prepare db sql))
+ (res (let loop ((res '()))
+ (let ((row (sqlite-step stmt)))
+ (if (not row)
+ (reverse! res)
+ (loop (cons row res)))))))
+ (sqlite-finalize stmt)
+ res))
(define %package-database
;; Define to the database file name of this package.
diff --git a/tests/database.scm b/tests/database.scm
index eb75363..75431e9 100644
--- a/tests/database.scm
+++ b/tests/database.scm
@@ -42,6 +42,16 @@
(test-assert "db-init"
(%db (db-init)))
+ (test-assert "sqlite-exec"
+ (begin
+ (sqlite-exec (%db) "\
+INSERT INTO build (job_spec, drv) VALUES ('job1', 'drv1');")
+ (sqlite-exec (%db) "\
+INSERT INTO build (job_spec, drv) VALUES ('job2', 'drv2');")
+ (sqlite-exec (%db) "\
+INSERT INTO build (job_spec, drv) VALUES ('job3', 'drv3');")
+ (sqlite-exec (%db) "SELECT * FROM build;")))
+
(test-assert "db-add-evaluation"
(%id (db-add-evaluation (%db) (make-dummy-job))))