An open API service indexing awesome lists of open source software.

https://github.com/caolan/chicken-leveldb

CHICKEN Scheme bindings to LevelDB
https://github.com/caolan/chicken-leveldb

Last synced: 5 months ago
JSON representation

CHICKEN Scheme bindings to LevelDB

Awesome Lists containing this project

README

          

# leveldb

Bindings to [LevelDB][1], a fast and lightweight key/value database library by
Google. Provides an implementation of the [level][2] egg. Include both eggs to
provide the API used in these examples.

## Examples

### Basic operation

```scheme
(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

```scheme
(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-stream db start: "name:" end: "name::"))))

;; prints
;; => (name:123 jane)
;; => (name:456 joe)
```

## API

### Open and close

```scheme
(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.

```scheme
(close-db db)
```

Closes database `db`.

```scheme
(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.

[1]: https://code.google.com/p/leveldb/
[2]: https://github.com/caolan/chicken-level