9.1
A small persistent key–value store backed by SQLite. Keys and values
-may be arbitrary Racket values and are stored using transparent
-serialization.
1 Overviewπ
The keystore provides persistent storage with automatic
-serialization and deserialization. Keys are additionally stored in a
-stringified lowercase form, which allows glob-style queries.
2 Structureπ
(struct keystore (file path dbh))
|
| file : any/c |
| path : path? |
| dbh : any/c |
Represents an open keystore. The file field contains the
-original argument, path is the resolved database path, and
-dbh is the SQLite connection.
3 Openingπ
(ks-open file) → keystore?
|
| file : (or/c path? string? symbol?) |
Opens or creates a keystore. When file is a symbol, a cache
-location is used; otherwise it is interpreted as a filesystem path.
-The database schema is created automatically if it does not yet exist.
4 Basic Operationsπ
(ks-set! ks key value) → boolean?
|
| ks : keystore? |
| key : any/c |
| value : any/c |
Stores value under key, replacing any existing value.
-The function always returns #t.
(ks-get ks key default ...) → any/c
|
| ks : keystore? |
| key : any/c |
| default : any/c |
Retrieves the value associated with key. If the key is not
-present, the provided default value is returned when given; otherwise
-the symbol 'ks-nil is returned.
(ks-exists? ks key) → boolean?
|
| ks : keystore? |
| key : any/c |
Returns #t if the key exists, and #f otherwise.
(ks-drop! ks key) → boolean?
|
| ks : keystore? |
| key : any/c |
Removes the key from the store. The function always returns #t.
5 Enumerationπ
(ks-keys ks) → (listof any/c)
|
| ks : keystore? |
Returns all keys in the store.
(ks-key-values ks) → (listof (cons/c any/c any/c))
|
| ks : keystore? |
Returns all key–value pairs as cons cells.
6 Glob Queriesπ
Glob queries operate on a lowercase string representation of keys.
(ks-keys-glob ks pattern) → (listof any/c)
|
| ks : keystore? |
| pattern : string? |
Returns all keys whose string form matches pattern.
(ks-key-values-glob ks pattern) → (listof (cons/c any/c any/c))
|
| ks : keystore? |
| pattern : string? |
Returns key–value pairs whose keys match pattern.
7 Raw Accessπ
(ks-keys-raw ks) → list?
|
| ks : keystore? |
Returns raw key rows in the form:
(list key-string str-key)
(ks-key-values-raw ks) → list?
|
| ks : keystore? |
Returns raw key–value rows in the form:
(list key-string str-key value-string)
8 Examplesπ
8.1 Basic Usageπ
| (define ks (ks-open 'demo)) |
| |
| (ks-set! ks 'a 42) |
| (ks-set! ks "b" '(1 2 3)) |
| |
| (ks-get ks 'a) |
| (ks-get ks 'missing) |
| (ks-get ks 'missing 0) |
8.2 Enumerationπ
| (ks-keys ks) |
| |
| |
| (ks-key-values ks) |
8.3 Glob Query Exampleπ
(ks-keys-glob ks "*b*")