Outdated egg!
This is an egg for CHICKEN 4, the unsupported old release. You're almost certainly looking for the CHICKEN 5 version of this egg, if it exists.
If it does not exist, there may be equivalent functionality provided by another egg; have a look at the egg index. Otherwise, please consider porting this egg to the current version of CHICKEN.
leveldb
Description
Bindings to LevelDB, a fast and lightweight key/value database library by Google. Provides an implementation of the level egg. Include both eggs to provide the API used in these examples.
Examples
Basic operation
(use level leveldb) (define db (open-db "./example")) (db-put db "hello" "world") (display (db-get db "hello")) ;; => world (db-delete db "hello") (close-db db)
Batches and ranges
(use level leveldb lazy-seq) (define operations '((put "name:123" "jane") (put "name:456" "joe"))) (define (print-names pairs) (lazy-each print pairs)) (call-with-db "./example" (lambda (db) (db-batch db operations) (print-names (db-pairs db start: "name:" end: "name::")))) ;; prints ;; => (name:123 jane) ;; => (name:456 joe)
API
[procedure] (open-db loc #!key (create #t) (exists #t))Opens database with path loc and returns a database object. By default, this method will create the database if it does not exist at loc and will not error if the database already exists. This behaviour can be modified using the keyword arguments. Setting exists to #f will mean an exception occurs if the database already exists. Setting create to #f will mean an exception occurs if the database does not exist.
[procedure] (close-db db)Closes database db.
[procedure] (call-with-db loc proc #!key (create #t) (exists #t))Opens database at loc and calls (proc db). The database will be closed when proc returns or raises an exception.
Source code / issues
https://github.com/caolan/chicken-leveldb
Changelog
4.0.0
- update to new level interface (v3.0.0):
- remove db-stream, add db-keys, db-values and db-pairs
- change missing key condition to type (exn level not-found) instead of (exn leveldb not-found)
3.0.3
- add test-generative as dependency
3.0.2
- add missing miscmacros dependency
3.0.1
- fixed out of date dependencies in meta file
3.0.0
- Re-written using the LevelDB C API
- All conditions are now of type (exn leveldb)
- Uses new level egg interface and added db-get/default support
- db-stream now returns key+value combinations as pairs instead of lists eg, (("key" . "value")) instead of (("key" "value"))
- all write operations now return #<unspecified> instead of #t