32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
-
+
-
-
|
(dbexists (let ((fe (file-exists? dbpath)))
(if fe
fe
(begin
(create-directory (conc *toppath* "/db") #t)
#f))))
(sdb (sqlite3:open-database dbpath))
(handler (make-busy-timeout (if (args:get-arg "-override-timeout")
(handler (make-busy-timeout 136000)))
(string->number (args:get-arg "-override-timeout"))
136000))))
(sqlite3:set-busy-handler! sdb handler)
(if (not dbexists)
(sdb:initialize sdb))
(sqlite3:execute sdb "PRAGMA synchronous = 1;")
sdb))
(define (sdb:initialize sdb)
|
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
-
+
-
+
-
-
+
+
+
+
|
sdb
"SELECT str FROM strs WHERE id=?;" id))
str))
;; Numbers get passed though in both directions
;;
(define (make-sdb:qry #!key (fname #f))
(let ((sdb (sdb:open fname: fname))
(let ((sdb #f) ;; (sdb:open fname: fname))
(scache (make-hash-table))
(icache (make-hash-table)))
(lambda (cmd var)
;; (if (not sdb)(set! sdb (sdb:open)))
(if (not sdb)(set! sdb (sdb:open fname: fname)))
(case cmd
;; ((init) (if (not sdb)(set! sdb (sdb:open))))
((finalize!) (if sdb (sqlite3:finalize! sdb)))
((finalize) (if sdb
(begin
(sqlite3:finalize! sdb)
(set! sdb #f))))
((getid) (let ((id (if (or (number? var)
(string->number var))
var
(sdb:string->id sdb scache var))))
(if id
id
(begin
|