diff --git a/keystore.rkt b/keystore.rkt index a32ae4a..54952f8 100644 --- a/keystore.rkt +++ b/keystore.rkt @@ -19,6 +19,7 @@ ks-key-values-raw ks-keys-raw ks-key-count + ks-transaction ) (define-struct keystore @@ -104,6 +105,15 @@ (map vector->list (query-rows (keystore-dbh ksh) "SELECT key, str_key, value FROM keystore"))) +(define-syntax ks-transaction + (syntax-rules () + ((_ ks b1 ...) + (begin + (query-exec (keystore-dbh ks) "BEGIN") + (let ((r (begin b1 ...))) + (query-exec (keystore-dbh ks) "COMMIT") + r))))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Internal working ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;