191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
|
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
|
-
-
-
-
-
-
-
+
|
db "SELECT val FROM metadat WHERE var=?;" var)
(if (string? res)
(let ((valnum (string->number res)))
(if valnum valnum res))
res)))
(define (db:set-var db var val)
;; Odd, I thought that if a constraint was placed on column then an insert with duplicate data
;; would fail and the insert would fall back to replace.
;; NB// accidently included primary key in the unique constraint which does not work.
(let ((have (db:get-var db var)))
;; (if have
;; (sqlite3:execute db "UPDATE metadat SET val=? WHERE var=?;" val var)
(sqlite3:execute db "INSERT OR REPLACE INTO metadat (var,val) VALUES (?,?);" var val)))
(sqlite3:execute db "INSERT OR REPLACE INTO metadat (var,val) VALUES (?,?);" var val))
;; use a global for some primitive caching, it is just silly to re-read the db
;; over and over again for the keys since they never change
(define *db-keys* #f)
(define (db-get-keys db)
|