commit | acd51950dbe3ef8427bfd8841f9a7eceb9789b17 | [log] [tgz] |
---|---|---|
author | Adam Kocoloski <kocolosk@apache.org> | Sat Nov 06 14:14:26 2021 -0400 |
committer | GitHub <noreply@github.com> | Sat Nov 06 14:14:26 2021 -0400 |
tree | 93ba1267e974151073d882e34f68ab806e61ed6c | |
parent | f9a2f0f70a7d64d14ff976e967420c3f21af783a [diff] |
Add a dev container configuration for VS Code (#27) This creates a development environment with a FoundationDB server and an erlfdb client in two containers, sharing a network through Docker Compose. It uses the FDB image published to Docker Hub for the FDB container, and downloads the FDB client packages from foundationdb.org to provide the development headers and libraries. Once the Docker Compose setup is created, VS Code executes the `create_cluster_file.bash` script to write down a cluster file containing the IP address in the compose network where the FDB service can be found, and initializes the FDB server with a new database. The use of an external FDB container allows the erlfdb container to be re-created as needed without losing the underlying data in the FDB container.
This project is a NIF wrapper for the FoundationDB C API. Documentation on the main API can be found here.
This project also provides a conforming implementation of the Tuple and Directory layers.
Assuming you have installed the FoundationDB C API library, building erlfdb is as simple as:
$ make
Alternatively, adding erlfdb as a rebar dependency should Just Work ®.
Documentation for installing FoundationDB can be found here for macOS or here for Linux.
A simple example showing how to open a database and read and write keys:
Eshell V9.3.3.6 (abort with ^G) 1> Db = erlfdb:open(<<"/usr/local/etc/foundationdb/fdb.cluster">>). {erlfdb_database,#Ref<0.2859661758.3941466120.85406>} 2> ok = erlfdb:set(Db, <<"foo">>, <<"bar">>). ok 3> erlfdb:get(Db, <<"foo">>). <<"bar">> 4> erlfdb:get(Db, <<"bar">>). not_found
FoundationDB has a custom binding tester that can be used to test whether changes have broken compatibility. See the BINDING_TESTER documentation for instructions on building and running that system.