aboutsummaryrefslogtreecommitdiff
path: root/nar-herder/database.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2022-11-29 19:41:46 +0000
committerChristopher Baines <mail@cbaines.net>2022-11-29 19:41:46 +0000
commit248aa5b390c9821cd18c046d9342772750f9a440 (patch)
treef9f6da6a24b9b0be10b04642c389149463129b02 /nar-herder/database.scm
parent5acfcc0a9d99d78a167c365534aa5bf592f5625e (diff)
downloadnar-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.scm20
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