(module vandusen-db (use-database database exec query sql) (import chicken scheme) (use (prefix sql-de-lite sql:) srfi-18 srfi-13) (reexport (except sql-de-lite exec query sql)) (define database (make-parameter #f)) (define (use-database file) (database (sql:open-database file))) (define (sql . stmt) (sql:sql (database) (string-concatenate stmt))) (define with-db (let ((mx (make-mutex))) (lambda (thunk) (dynamic-wind (lambda () (mutex-lock! mx)) (lambda () (handle-exceptions exn (error 'exec (sql:error-message (database))) (thunk))) (lambda () (mutex-unlock! mx)))))) (define (exec stmt . vars) (with-db (lambda () (apply sql:exec stmt vars)))) (define (query proc stmt . vars) (with-db (lambda () (apply sql:query proc stmt vars)))) )