diff --git a/.gitignore b/.gitignore index 39a4f9c..3bd7ab8 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ compiled/ # Dependency tracking files *.dep +/*.bak diff --git a/keystore.rkt b/keystore.rkt index b5adc99..fde93ec 100644 --- a/keystore.rkt +++ b/keystore.rkt @@ -7,6 +7,7 @@ ) (provide ks-open + ks-close ks-set! ks-get ks-drop! @@ -24,6 +25,12 @@ #:transparent ) +(define keystore*? keystore?) +(set! keystore? (λ (ks) + (and (keystore*? ks) + (connection? (keystore-dbh ks)) + (connected? (keystore-dbh ks))))) + (define/contract (ks-open file) (-> (or/c path? string? symbol?) keystore?) (let ((path (if (symbol? file) @@ -34,6 +41,12 @@ (query-exec dbh "CREATE INDEX IF NOT EXISTS keystore_idx on keystore(str_key);") (make-keystore file path dbh)))) +(define/contract (ks-close ksh) + (-> keystore? boolean?) + (let ((dbh (keystore-dbh ksh))) + (disconnect dbh) + #t)) + (define/contract (ks-set! ksh key value) (-> keystore? any/c any/c boolean?) (ks-set!* (keystore-dbh ksh) (value->string key) (format "~a" key) (value->string value)))