aboutsummaryrefslogtreecommitdiff
path: root/guix-qa-frontpage/database.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix-qa-frontpage/database.scm')
-rw-r--r--guix-qa-frontpage/database.scm71
1 files changed, 69 insertions, 2 deletions
diff --git a/guix-qa-frontpage/database.scm b/guix-qa-frontpage/database.scm
index a53be99..e1a018c 100644
--- a/guix-qa-frontpage/database.scm
+++ b/guix-qa-frontpage/database.scm
@@ -45,7 +45,10 @@
insert-into-builds-to-cancel-later
delete-from-builds-to-cancel-later
- select-from-builds-to-cancel-later))
+ select-from-builds-to-cancel-later
+
+ insert-create-branch-for-issue-log
+ select-create-branch-for-issue-log))
(define-record-type <database>
(make-database database-file reader-thread-channel writer-thread-channel
@@ -82,6 +85,11 @@ CREATE UNIQUE INDEX IF NOT EXISTS cache_idx ON cache (key);
CREATE TABLE IF NOT EXISTS builds_to_cancel_later (
category_name TEXT NOT NULL,
category_value TEXT NOT NULL
+);
+
+CREATE TABLE IF NOT EXISTS create_branch_for_issue_logs (
+ issue TEXT NOT NULL,
+ log TEXT NOT NULL
);")
(sqlite-exec db schema))
@@ -110,7 +118,12 @@ CREATE TABLE IF NOT EXISTS builds_to_cancel_later (
);
CREATE UNIQUE INDEX IF NOT EXISTS builds_to_cancel_later_unique
- ON builds_to_cancel_later (category_name, category_value);")))
+ ON builds_to_cancel_later (category_name, category_value);
+
+CREATE TABLE IF NOT EXISTS create_branch_for_issue_logs (
+ issue TEXT NOT NULL,
+ log TEXT NOT NULL
+);")))
(sqlite-finalize statement)))
@@ -548,3 +561,57 @@ WHERE category_name = :name"
(sqlite-reset statement)
result)))))
+
+(define (insert-create-branch-for-issue-log database issue log)
+ (database-call-with-transaction
+ database
+ (lambda (db)
+ (let ((delete-statement
+ (sqlite-prepare
+ db
+ "
+DELETE FROM create_branch_for_issue_logs WHERE issue = :issue"
+ #:cache? #t))
+ (insert-statement
+ (sqlite-prepare
+ db
+ "
+INSERT INTO create_branch_for_issue_logs (issue, log)
+VALUES (:issue, :log)"
+ #:cache? #t)))
+
+ (sqlite-bind-arguments delete-statement
+ #:issue issue)
+ (sqlite-step delete-statement)
+ (sqlite-reset delete-statement)
+
+ (sqlite-bind-arguments
+ insert-statement
+ #:issue issue
+ #:log log)
+
+ (sqlite-step insert-statement)
+ (sqlite-reset insert-statement)))))
+
+(define (select-create-branch-for-issue-log database issue)
+ (call-with-worker-thread
+ (database-reader-thread-channel database)
+ (lambda (db)
+ (let ((statement
+ (sqlite-prepare
+ db
+ "
+SELECT log FROM create_branch_for_issue_logs
+WHERE issue = :issue"
+ #:cache? #t)))
+
+ (sqlite-bind-arguments
+ statement
+ #:issue issue)
+
+ (let ((result (match (sqlite-step statement)
+ (#(log) log)
+ (#f #f))))
+ (sqlite-reset statement)
+
+ result)))))