1.0.0 • Published 9 years ago

index-feed v1.0.0

Weekly downloads
-
License
MIT
Repository
-
Last release
9 years ago

index-feed

setup a changes feed and indexer for leveldb

This module provides a wrapper around setting up:

example

var ixfeed = require('index-feed');
var through = require('through2');
var level = require('level');

var ddb = level(__dirname + '/data.db');
var idb = level(__dirname + '/index.db');
var ixf = ixfeed({ data: ddb, index: idb, valueEncoding: 'json' });

ixf.index.add(function (row, cb) {
    if (/^hacker!/.test(row.key)) {
        cb(null, {
            'hacker.name': row.value.name,
            'hacker.space': row.value.hackerspace
        });
    }
    else cb()
});

/*
ixf.feed.createReadStream({ live: true })
    .on('data', function (ch) { console.log('feed:', ch) })
;
*/

ixf.db.batch([
    {
        type: 'put',
        key: 'hacker!1',
        value: { name: 'substack', hackerspace: 'sudoroom' }
    },
    {
        type: 'put',
        key: 'hacker!2',
        value: { name: 'mk30', hackerspace: 'sudoroom' }
    },
    {
        type: 'put',
        key: 'hacker!3',
        value: { name: 'mitch', hackerspace: 'noisebridge' }
    }
], ready);

function ready () {
    // list all hackers at sudoroom:
    var sudoroom = ixf.index.createReadStream('hacker.space', {
        lte: 'sudoroom', gte: 'sudoroom'
    });
    sudoroom.pipe(through.obj(function (row, enc, next) {
        console.log(row.value.name);
        next();
    }));
}

methods

var ixfeed = require('index-feed')

var ixf = ixfeed(opts)

Create a new ixf object from required options:

  • opts.data - levelup instance to use for storing data
  • opts.index - levelup instance to use for storing indexes

and optional options:

  • opts.keyEncoding - keyEncoding to use for log data
  • opts.valueEncoding - valueEncoding to use for log data

properties

  • ixf.db - levelup database handle that appends to changesdown
  • ixf.index - changes-index instance
  • ixf.feed - changes-feed instance

license

MIT