hyperkv
Version:
p2p key/value store over a [hyperlog][1] using a [multi-value register conflict strategy][2]
57 lines (49 loc) • 1.35 kB
JavaScript
var test = require('tape')
var hyperkv = require('../')
var memdb = require('memdb')
var hyperlog = require('hyperlog')
var sub = require('subleveldown')
test('live - with old', function (t) {
t.plan(6)
var db = memdb()
var kv = hyperkv({
log: hyperlog(sub(db, 'log'), { valueEncoding: 'json' }),
db: sub(db, 'kv')
})
kv.put('A', 555, function (err, node) {
t.ifError(err)
kv.put('B', 555, function (err, node) {
t.ifError(err)
var results = []
kv.createReadStream({ live: true, old: true })
.on('data', function (data) {
t.ok(data.key === 'A' || data.key === 'B' || data.key === 'C')
results.push(data.key)
if (results.length === 2) {
kv.put('C', 555, function (err, node) {
t.ifError(err)
})
}
})
})
})
})
test('live - only new', function (t) {
t.plan(3)
var db = memdb()
var kv = hyperkv({
log: hyperlog(sub(db, 'log'), { valueEncoding: 'json' }),
db: sub(db, 'kv')
})
kv.put('A', 555, function (err, node) {
t.ifError(err)
kv.put('B', 555, function (err, node) {
t.ifError(err)
kv.createReadStream({ live: true, old: false })
.on('data', function (data) {
t.equal(data.key, 'C', 'New entry')
})
kv.put('C', 555)
})
})
})