Skip to content

Instantly share code, notes, and snippets.

@juliangruber
Last active December 15, 2015 22:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save juliangruber/5336653 to your computer and use it in GitHub Desktop.
Save juliangruber/5336653 to your computer and use it in GitHub Desktop.
$ node t.js write && node t.js read
udid 5461b950459503f9efdf89a0ddbc486ea99001b6
DB: /tmp/test-db
inserting data
finished writing
udid 5461b950459503f9efdf89a0ddbc486ea99001b6
DB: /tmp/test-db
reading data
var Doc = require('crdt').Doc;
var levelup = require('levelup');
var levelScuttlebutt = require('level-scuttlebutt');
var SubLevel = require('level-sublevel');
var udid = require('udid')('tasks');
var db = SubLevel(levelup('/tmp/test-db'));
var crdtDB = db.sublevel('crdt');
console.log('udid', udid);
console.log('DB: /tmp/test-db');
levelScuttlebutt(crdtDB, udid, function (name) {
return new Doc();
});
crdtDB.open('crdt', function (err, doc) {
if (err) throw err;
var User = doc.createSet('type', 'user');
var List = doc.createSet('type', 'list');
var Task = doc.createSet('type', 'task');
if (process.argv[2] == 'write') {
console.log('inserting data');
doc.add({
type : 'user',
name : 'julian'
});
var list1 = doc.add({
type : 'list',
name : 'patternscout'
});
var list2 = doc.add({
type : 'list',
name : 'godmode'
});
doc.add({
type : 'task',
name : 'Fetch universe',
list : list1.id
});
doc.add({
type : 'task',
name : 'foobar'
});
setTimeout(function () {
console.log('finished writing');
}, 1000);
} else {
console.log('reading data');
setTimeout(function () {
User.onEach(console.log.bind(console, 'user'));
List.onEach(console.log.bind(console, 'list'));
Task.onEach(console.log.bind(console, 'task'));
}, 1000);
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment