diff options
Diffstat (limited to 'guix-qa-frontpage/database.scm')
-rw-r--r-- | guix-qa-frontpage/database.scm | 71 |
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))))) |