diff options
author | Christopher Baines <mail@cbaines.net> | 2020-04-13 15:44:20 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2020-04-13 15:44:20 +0100 |
commit | 4c75d59e4c8eb05907f67c154cde5375ebf8dcf5 (patch) | |
tree | 41c54064ef604ffc11b9457e779b61e4ce0a1db1 /guix-build-coordinator | |
parent | cc2d1ddf2444e33196443eba3df7961b6dd5917e (diff) | |
download | build-coordinator-4c75d59e4c8eb05907f67c154cde5375ebf8dcf5.tar build-coordinator-4c75d59e4c8eb05907f67c154cde5375ebf8dcf5.tar.gz |
Add datastore-store-build-result
Diffstat (limited to 'guix-build-coordinator')
-rw-r--r-- | guix-build-coordinator/datastore.scm | 1 | ||||
-rw-r--r-- | guix-build-coordinator/datastore/sqlite.scm | 51 |
2 files changed, 52 insertions, 0 deletions
diff --git a/guix-build-coordinator/datastore.scm b/guix-build-coordinator/datastore.scm index 10131e7..8360970 100644 --- a/guix-build-coordinator/datastore.scm +++ b/guix-build-coordinator/datastore.scm @@ -10,6 +10,7 @@ datastore-new-agent datastore-list-agents datastore-find-agent + datastore-store-build-result datastore-new-agent-password datastore-agent-password-exists? datastore-find-build diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm index c0c964d..1af74dd 100644 --- a/guix-build-coordinator/datastore/sqlite.scm +++ b/guix-build-coordinator/datastore/sqlite.scm @@ -13,6 +13,7 @@ datastore-store-derivation datastore-store-build datastore-find-build + datastore-store-build-result datastore-new-agent datastore-list-agents datastore-find-agent @@ -172,6 +173,56 @@ WHERE agent_id = :agent_id AND password = :password"))) (sqlite-exec db "COMMIT TRANSACTION;"))) #t) +(define-method (datastore-store-build-result + (datastore <sqlite-datastore>) + build-id + agent-id + result + failure-reason) + (define (insert-build-result db build-id agent-id result failure-reason) + (sqlite-exec + db + (string-append + " +INSERT INTO build_results ( + build_id, agent_id, result, failure_reason +) VALUES ('" + build-id "', '" + agent-id "', '" + result "', " + (if failure-reason + (string-append "'" failure-reason "'") + "NULL") + ")"))) + + (define (remove-build-allocation db build-id agent-id) + (sqlite-exec + db + (string-append + " +DELETE FROM allocated_builds WHERE build_id = '" + build-id + "' AND agent_id = '" + agent-id + "'"))) + + (define (mark-build-as-processed db build-id) + (sqlite-exec + db + (string-append + " +UPDATE builds SET processed = 1 WHERE uuid = '" build-id "'"))) + + (call-with-worker-thread + (slot-ref datastore 'worker-thread-channel) + (lambda (db) + (sqlite-exec db "BEGIN TRANSACTION;") + (insert-build-result db build-id agent-id result failure-reason) + (remove-build-allocation db build-id agent-id) + (mark-build-as-processed db build-id) + (sqlite-exec db "COMMIT TRANSACTION;"))) + #t) + (define-method (datastore-find-build (datastore <sqlite-datastore>) uuid) |