Skip to content
Jonas Schnelli edited this page Aug 20, 2016 · 1 revision

Open, Flush and Close a Database

Create new database, append a simple text record, flush to disk

cstring *value;
cstring *key;
logdb_log_db *db;
enum logdb_error error = 0;
int create_database = 1;

/* create a new database object */
db = logdb_new();

/* create a database file (will overwrite existing) */
logdb_load(db, "/tmp/test.logdb", create_database, &error);

/* append a record */
key = cstr_new("testkey");
value = cstr_new("somevalue");
/* second parameter NULL means we don't use a transaction */
logdb_append(db, NULL, key, value);

/* flush database (write its state to disk) */
logdb_flush(db);

/* cleanup */
logdb_free(db); /* will close file */
cstr_free(key, true);
cstr_free(value, true);

open existing database, find a value, close

cstring *value_test;
cstring *key;
logdb_log_db *db;
enum logdb_error error = 0;

/* create a new database object */
db = logdb_new();

/* create a database file (will overwrite existing) */
logdb_load(db, "/tmp/test.logdb", 0, &error); /* don't create new database (0 as third arg) */

/* find a record */
key = cstr_new("doesnotexists");
value_test = logdb_find(db, key);
/* value_test will be 0 (not found) */
cstr_free(key, true);

key = cstr_new("testkey");
value_test = logdb_find(db, key); /* will return reference to the in-memory mapping */

/* second parameter NULL means we don't use a transaction */
logdb_append(db, NULL, key, value);

/* flush database (write its state to disk) */
logdb_flush(db);

/* cleanup */
logdb_free(db);
cstr_free(key, true);
cstr_free(value_test, true);