source: project/release/4/vandusen/trunk/vandusen-db.scm @ 24096

Last change on this file since 24096 was 24096, checked in by Moritz Heidkamp, 10 years ago

vandusen: also export `query' from vandusen-db

File size: 867 bytes
Line 
1(module vandusen-db
2
3(use-database database exec query sql)
4
5(import chicken scheme)
6(use (prefix sql-de-lite sql:) srfi-18 srfi-13)
7(reexport (except sql-de-lite exec query sql))
8
9(define database (make-parameter #f))
10
11(define (use-database file)
12  (database (sql:open-database file)))
13
14(define (sql . stmt)
15  (sql:sql (database) (string-concatenate stmt)))
16
17(define with-db
18  (let ((mx (make-mutex)))
19    (lambda (thunk)
20      (dynamic-wind
21          (lambda ()
22            (mutex-lock! mx))
23          (lambda ()
24            (handle-exceptions exn
25              (error 'exec (sql:error-message (database)))
26              (thunk)))
27          (lambda ()
28            (mutex-unlock! mx))))))
29
30(define (exec stmt . vars)
31  (with-db (lambda () (apply sql:exec stmt vars))))
32
33
34(define (query proc stmt . vars)
35  (with-db (lambda () (apply sql:query proc stmt vars))))
36
37
38
39)
Note: See TracBrowser for help on using the repository browser.