diff options
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 |