diff options
author | Christopher Baines <mail@cbaines.net> | 2022-11-29 19:41:46 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2022-11-29 19:41:46 +0000 |
commit | 248aa5b390c9821cd18c046d9342772750f9a440 (patch) | |
tree | f9f6da6a24b9b0be10b04642c389149463129b02 /nar-herder/database.scm | |
parent | 5acfcc0a9d99d78a167c365534aa5bf592f5625e (diff) | |
download | nar-herder-248aa5b390c9821cd18c046d9342772750f9a440.tar nar-herder-248aa5b390c9821cd18c046d9342772750f9a440.tar.gz |
Extract out table-exists?
Diffstat (limited to 'nar-herder/database.scm')
-rw-r--r-- | nar-herder/database.scm | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/nar-herder/database.scm b/nar-herder/database.scm index 64655df..d945786 100644 --- a/nar-herder/database.scm +++ b/nar-herder/database.scm @@ -126,22 +126,28 @@ CREATE TABLE recent_changes ( (sqlite-exec db schema)) -(define (update-schema db) +(define (table-exists? db name) (let ((statement (sqlite-prepare db " -SELECT name FROM sqlite_master WHERE type = 'table' AND name = :name"))) +SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = :name"))) (sqlite-bind-arguments statement - #:name "narinfos") + #:name name) + + (let ((result + (match (sqlite-step statement) + (#f #f) + (#(1) #t)))) + (sqlite-finalize statement) - (match (sqlite-step statement) - (#f (perform-initial-database-setup db)) - (_ #f)) + result))) - (sqlite-finalize statement)) +(define (update-schema db) + (unless (table-exists? db "narinfos") + (perform-initial-database-setup db)) (sqlite-exec db |