d-leveldb-comparator

A Leveldb implementation for D., Fixes for Comparator


Keywords
application, server, database
License
BSL-1.0
Install
dub fetch d-leveldb-comparator

Documentation

D-Leveldb Build Status

A Leveldb implementation for D. Requires leveldb deimos bindings.

Forked, to fix the use of custom comparators.

Comparator

class ComparatorDbKey: Options.Comparator
{
  override int compare(const char[] a, const char[] b) inout
  {
    immutable DbKey al = *cast(const DbKey*)a;
    immutable DbKey bl = *cast(const DbKey*)b;

    auto dTime   =  cast(int)(al.gTime - bl.gTime);
    return dTime;
  }
}

Example

import leveldb, std.stdio;

void main()
{
    auto opt = new Options;
    opt.create_if_missing = true;

    auto db = new DB(opt, "path_to_my_db_folder");
    db.put("Hello", "World");

    assert(db.get_slice("Hello").as!string == "World");

    db.put("PI", 3.14);

    foreach(Slice key, Slice value; db)
    {
        if(key.as!string == "PI")
            writeln(key.as!string, ": ", value.as!double);
        else
            writeln(key.as!string, ": ", value.as!string);
    }
}

Leveldb Version: 1.16.0

Installation

Get this with dub.

To use this package, put the following dependency into your project's package.json into the dependencies section:

{
        ...
        "dependencies": {
                "d-leveldb": "~master"
        }
}