Beispiel #1
0
var Kued = function (options) {
  var level = require('level');
  var ttl = require('level-ttl');
  var uuid = require('uuid');
  var Sublevel = require('level-sublevel');
  var concat = require('concat-stream');

  var self = this;
  var TTL = 60000;

  options = options || {};

  this.queueDBPath = options.queueDB || './db/queued-db';
  this.pairDBPath = options.pairDB || './db/paired-db';
  this.itemsDBPath = options.itemsDB || './db/items-db';
  this.queueTTL = parseInt(options.queueTTL, 10) || TTL;
  this.pairTTL = parseInt(options.pairTTL, 10) || TTL;
  this.limit = parseInt(options.limit, 10) || 2;

  if (this.limit < 2) {
    throw new Error('You need a limit greater than 1');
  }

  this.queued = Sublevel(level(this.queueDBPath, {
    createIfMissing: true,
    valueEncoding: 'json'
  }));

  this.paired = Sublevel(level(this.pairDBPath, {
    createIfMissing: true,
    valueEncoding: 'json'
  }));

  this.items = Sublevel(level(this.itemsDBPath, {
    createIfMissing: true,
    valueEncoding: 'json'
  }));

  var getQueued = function (next) {
    var rs = self.queued.createReadStream();

    rs.pipe(concat(function (q) {
      next(null, {
        queued: q
      });
    }));

    rs.on('error', function (err) {
      next(err);
    });
  };

  var setPairKey = function (key, item) {
    self.items.put('pairKey!' + item.key, key, { ttl: self.pairTTL }, function (err) {
      if (err) {
        throw err;
      }

      self.queued.del(item.key);
    });
  };

  var addPair = function (origKey, items, next) {
    var key = uuid.v4();

    self.paired.put(key, items, { ttl: self.pairTTL }, function (err) {
      if (err) {
        next(err);
        return;
      }

      items.forEach(function (item) {
        setPairKey(key, item);
      });

      next(null, {
        origKey: origKey,
        pairKey: key
      });
    });
  };

  var getKey = function (key, next) {
    getQueued(function (err, q) {
      if (err) {
        next(err);
        return;
      }

      if (q.queued.length >= self.limit) {
        addPair(key, q.queued, next);
      } else {
        next(null, false);
      }
    });
  };

  this.add = function (value, next) {
    var key = uuid.v4();

    self.queued.put(key, value, { ttl: self.queueTTL }, function (err) {
      if (err) {
        next(err);
        return;
      }

      getKey(key, next);
    });
  };

  this.getPair = function (key, next) {
    this.items.get('pairKey!' + key, function (err, pairKey) {
      if (err || !pairKey) {
        next(new Error('No pairing found'));
        return;
      }

      self.paired.get(pairKey, function (err, pair) {
        if (err || !pair) {
          next(new Error('No pairing found'));
          return;
        }

        next(null, pair);
      });
    });
  };
};
Beispiel #2
0
var level = require('level')
var levelPromise = require('level-promise')
var sublevel = require('sublevel')

var db = level('./db/bigdata', {
  createIfMissing: true,
  valueEncoding: 'json'
})

// db.createKeyStream().on('data', console.log.bind(console,'k'))

module.exports = levelPromise(sublevel(db, 'schools'))
Beispiel #3
0
var http = require('http')
var fs = require('fs')
var ecstatic = require('ecstatic')
var st = ecstatic('public')
var router = require('./router.js')
var hyperstream = require('hyperstream')
var createElement = require('virtual-dom/create-element')
var body = require('body/any')
var level = require('level')
var db = level('students.db', { valueEncoding: 'json' })
var collect = require('collect-stream')
var sorthash = require('./lib/sorthash.js')
var wsock = require('websocket-stream')

var server = http.createServer(function (req, res) {
  var m = router.match(req.url)
  if (req.url === '/apply' && req.method === 'POST') {
    body(req, res, function (err, params) {
      var key = 'student!' + params.name
      var house = sorthash(params.name)
      db.batch([
        { type: 'put', key: key, value: {
          house: house
        } },
        { type: 'put',
          key: 'house!' + house + '!' + params.name,
          value: 0
        }
      ], function (err) {
        if (err) res.end('error: ' + err)
        else res.end('ok!')
Beispiel #4
0
var level = require('level')
var db = level(process.argv[2])
var file = process.argv[3]
var fs = require('fs')
var commands = []

fs.readFile(file, 'utf8', function(err,data) {
  if(err) throw err
  var array = data.toString().split('\n')
  for (i in array) {
    var x = array[i].split(',')
    if (x[0] === 'put') {
      var y = ('{ ' + "type: 'put', key: '" + x[1] + "', value: '" + x[2] + "' }")
      commands.push(y)
    } 
    else if (x[0] === 'del') {
     var z = ('{ ' + "type: 'del', key: '" + x[1] + "' }")
     commands.push(z)
    }
  }
  console.log(commands)
  db.batch(commands, function (err) {
    if (err) throw err
    console.log("Woot!")
  })
})

//db.get('@izs', function (err, value) {
//  console.log('This is @izs value:', value)
//  db.close()
//})
Beispiel #5
0
function makeCached (transform, name) {
    var cache = level("./cache/" + name);
    return cacheify(transform, cache);
}
Beispiel #6
0
var levelup  = require('level')
//var SubLevel = require('level-sublevel')
var pull     = require('pull-stream')

var path    = '/tmp/pull-level-read-live'
require('rimraf').sync(path)
var db      = levelup(path)

var l = require('../')
var all = []

var h = require('./helper')

require('tape')('live', function (t) {

  var second = false

  h.timestamps(db, 10, function (err, all) {

    var i = 0
    var sync = false
    pull(
      l.read(db, {tail: true, onSync: function () {
        console.log('SYNC')
        sync = true
      }}),
      h.exactly(20),
      pull.collect(function (err, ary) {
        process.nextTick(function () {
          t.notOk(err)
const rapid     = require('rapid-stream')
const sort      = require('sort-stream2')
const json      = require('JSONStream')
const through   = require('through2')
const request   = require('request')
const ghauth    = require('ghauth')
const level     = require('level')
const path      = require('path')
const url       = require('url')
const fs        = require('fs')

const WEEK  = 1000 * 60 * 60 * 24 * 7
const dat   = require('dat')(__dirname, kickOff)
const dbdir = path.join(__dirname, '.stars')
const db    = sublevel(level(dbdir, {
  valueEncoding: 'json'
}))

const counts = db.sublevel('counts')
const dates  = db.sublevel('dates')

var token = null

function kickOff(err) {
  if (err) throw err

  ghauth({
    configName: 'unpm',
    scopes: ['user'],
    note: 'npm data aggregation project',
    userAgent: 'unpm'
var expect = require('chai').expect;
var level = require('level');
var db = level('testdb', {valueEncoding: 'json'});
var _ = require('lodash');

var PersonDomain = require('../')({
  db: db,
});

describe("#Person", function () {
  it("should CRUD person model", function (done) {
    var newPerson = PersonDomain.create({
      name: "Bob Loblaw",
      email: "*****@*****.**",
    });
    newPerson.save(function (err) {
      expect(err).to.not.exist;
      var id = newPerson.id;
      expect(id).to.exist;
      expect(newPerson.type).to.equal("Person");
      PersonDomain.get(id, function (err, getPerson) {
        expect(err).to.not.exist;
        expect(getPerson.toJSON()).to.deep.equal(newPerson.toJSON());
        var updates = { name: "Bob" };
        PersonDomain.update(id, updates, function (err, updatePerson) {
          expect(err).to.not.exist;
          expect(updatePerson.toJSON())
          .to.deep.equal(_.extend(newPerson.toJSON(), updates));
          done();
        });
      });
Beispiel #9
0
var fs = require('fs');
var level = require('level');

// read file and split into an array of lines
var file = fs.readFileSync(process.argv[3], 'utf8');
var lines = file.split('\n');

level(process.argv[2], function (err, db) {

  // uses batch chained: https://github.com/rvagg/node-levelup#batch_chained
  var batch = db.batch();
  lines.forEach(function (line) {
    var d = line.split(',');
    if (d[0] == 'del') {
      return batch.del(d[1]);
    } else {
      batch.put(d[1], d[2]);
    }
  });
  batch.write();
});
Beispiel #10
0
module.exports = function(dir,opts){
  var db, sep = 'ÿ';
  if(dir && dir.createReadStream){
    db = dir;
  } else {
    db = level(dir,{valueEncoding:'json'});
    db = sublevel(db);
  }

  if(!db.createWriteStream) {
    db.createWriteStream = LevelWriteStream(db)
  }


  opts = opts||{};

  var o = {
    db:db,
    // a database always has a uuid that identifies it
    // whenever a db is referenced from some place outside it will need this uuid.
    _dbid:[],
    getId:function(cb){
      var z = this;
      if(opts.id) return setImmediate(function(){
        cb(false,opts.id);
      });

      if(z._dbid.length) return z._dbid.push(cb);
      z._dbid.push(cb);

      var cbs = function(err,data){
        var a = z._dbid;
        z._dbid = [];
        while(a.length) a.shift()(err,data);
      }

      db.get('id',function(err,id){
        if(err) {
          if((err+'').indexOf('NotFoundError') > -1){
            id = uuid.v4();
            db.put('id',id,function(err){
              if(err) return cbs(err);
              opts.id = id;
              cbs(false,id);
            });
          } else return cbs(err,id);
        }
        return cbs(false,id);
      });

    },
    getTroopData:function(id,cb){
      var z = this;
      if(!id) return process.nextTick(function(){
        var e = new Error('id or key required to get troop');
        e.code = z.errors.noid;
        cb(e);
      });

      if(id.length == 32) {
        z.getTroopIdFromKey(id,function(err,id){
          if(err) return cb(err);
          db.get("troops"+sep+id,cb);
        });
        return;
      }

      db.get("troops"+sep+id,function(err,data){
        if(err && (err+'').indexOf('NotFoundError') > -1){
          err.code = z.errors.notroop;
        }
        cb(err,data);
      });
    },
    writeTroop:function(obj,cb){
      // create and or update a troop.
      obj = obj||{};

      console.log('writing new  troop',obj);

      var z = this;
      var prefix = "troops"+sep;
      var id = obj.troop||obj.id;

      if(!id) {
        // make troop
        z.getNextId('troops',function(err,id){
          
          if(err) return cb(err);
          obj.id = obj.troop = id;

          var afterKey = function(err,key){
            obj.key = key;
            if(err) return cb(err);
            z.db.put(prefix+obj.id,obj,function(err){
              if(err) return cb(err);
              cb(false,obj);
              console.log('cb with ',obj);
            });
          }

          // the key was provided.
          if(obj.key && obj.key.length === 32){
            console.log('key passed in!',obj.key);
            return afterKey(false,obj.key);
          }

          z.assignTroopKey({id:obj.id},afterKey);

        });
      } else {
        z.getTroopData(id,function(err,data){
          if(err){
            if(err.code != z.errors.notroop) return cb(err);

            // if id is manually provided.

            obj.neverConnected = true;
            obj.troop = obj.id = id;
            // if key is present is gets force assigned to this mystery troop.
            z.assignTroopKey({id:obj.id,key:obj.key},function(err,key){
              if(err) return cb(err);
              obj.key = key;
              z.db.put(prefix+obj.id,obj,function(err){
                if(err) return cb(err);
                cb(false,obj);
              });
            });
            return;
          }

          obj = xtend(data||{},obj);

          // i dont care if this troop id is the next increment just save a troop at this id.
          obj.troop = obj.id = id;

          z.db.put(prefix+obj.id,obj,function(err){
            if(err) cb(err);
            cb(false,obj);
          });
        });
      }
    },
    _deletes:{},
    deleteTroop:function(id,cb){
      // i make sure the troop exists and all i do is set a deleted flag to the time on the troop's object.
      var z = this;
      var prefix = "troops"+sep;

      if(z._deletes[id]) return z._deletes[id].push(cb);
      z._deletes[id] = [cb];

      z.getTroopData(id,function(err,data){
        if(err) return cbs(err)
        // if it's deleted already do nothing.
        if(data.deleted) return cbs(false,data);

        data.deleted = Date.now();

        z.db.put(prefix+data.id,data,function(err){
          cbs(err,data);
        }); 
      });

      function cbs(err,data){
        var a = z._deletes[id];
        delete z._deletes[id];
        while(a.length) a.shift()(err,data);
      }
    },
    writeScout:function(troop,obj,cb){
      var z = this;
      var prefix = "troops"+sep+troop+sep;
      z.getTroopData(troop,function(err,troop){
        if(err) return cb(err);
        // get troop supports key as weel as id so make sure i pass on id.
        troop = troop.id;
        if(!obj.id) {
          z.getNextId("troops"+sep+troop,function(err,id){
            if(err) return cb(err);
            obj.id = id;
            obj.troop = troop;
            db.put(prefix+id,obj,function(err,data){
              cb(err,obj);
            });
          })
        } else {
          z.getScoutData(troop,obj.id,function(err,data){
            if(err && err.code !== z.errors.noscout) {
              return cb(err);
            }

            obj = xtend(data||{},obj);
            obj.troop = troop;
            db.put(prefix+obj.id,obj,function(err,data){
              cb(err,obj);
            });
          });
        }
      });
    },
    deleteScout:function(troop,id,cb){
      var z = this;
      var prefix = "troops"+sep+troop+sep;
      z.getScoutData(troop,id,function(err,obj){
        if(err) return cb(err);
        obj.deleted = Date.now();
        db.put(prefix+id,obj,function(err){
          cb(err,obj);
        })
      }) 
    },
    getScoutData:function(troop,id,cb){
      var z = this;
      var prefix = "troops"+sep+troop+sep;

      if(!id || !troop) return process.nextTick(function(){
        var e = new Error('troop and id required to get scout');
        e.code = z.errors.noid;
        cb(e);
      });

      z.db.get(prefix+id,function(err,data){
        if(err && (err+'').indexOf('NotFoundError') > -1){
          err.code = z.errors.noscout;
        }
        cb(err,data);
      }); 
    },
    // generic get any current data for troops, a troop, scouts, a scout
    get:function(/*troop,scout,*/cb){
      var z = this;
      var args = [].slice.call(arguments);
      var cb = args.pop();
      var troop = args.shift();
      var scout = args.shift();

      var result = {};
      var range = "";
      if(scout) range = troop+sep+scout;
      else if (troop) range = ''+troop;

      z.sync({range:range}).on('data',function(data){

        if(data.report == "troop-data"){
          if(data.deleted) return;
          if(!result[data.troop]) result[data.troop] = data.data;

          data.data.scouts = {};
          data.data.reports = {};
        } else if(data.report == "scout-data"){
          if(!result[data.troop]) return;
          if(!result[data.troop].scouts[data.scout]) result[data.troop].scouts[data.scout] = data.data;
          data.data.reports = {};

        } else if(data.report) {
          if(!result[data.troop]) return;
          if(!result[data.troop].scouts[data.scout]) return;

          if(data.scout){
            result[data.troop].scouts[data.scout].reports[data.report] = data;
          } else { 
            result[data.troop].reports[data.report] = data;
          }
        }

      }).on('end',function(){
        if(troop){
          result = result[troop];
          if(scout && result){
            result = result.scouts[scout];
          }
        }

        cb(false,result);
        cb = function(){};
      }).on('error',function(err){
        cb(err);
        cb = function(){};     
      });

    },
    sync:function(options){
      var z = this;
      var deletes = {};
      var range = options.range||'';
      if(range.join) range = range.join(sep);

      var opts = {start:"troops"+sep+range,end:"troops"+sep+range+sep+sep};

      var stream;

      if(options.tail) {
        opts.old = true;
        stream = livestream(z.db,opts).on('sync',function(){
          this.emit('data',{sync:true});
          // this event lets you know when this stream has sent all of the events that have happened...
          // and is starting to wait for new events to happen
        });
      } else {
        stream = z.db.createReadStream(opts);
      }

      var s = through2.obj(function(data,enc,cb){
        // sync event from live stream.
        if(data.sync){
          this.push(data);
          return cb()
        }
        var chunks = data.key.split(sep);
        var troop = chunks[1];
        var scout = chunks[2];
        var report = chunks[4];

        // filter deleted troops and scouts. yeah i need to do this. it's the only reason you would delete troops.
        if(report){
          data = data.value;
          // a report.
          if(deletes[troop] || deletes[troop+sep+scout]){
            return cb();
          }
        } else if(scout) {
          // scout data object
          if(deletes[troop]) {
            return cb();
          }

          if(data.value.deleted) {
            deletes[troop+sep+scout] = 1;
            return cb();
          } else if(deletes[troop+sep+scout]) {
            // un-delete
            delete deletes[troop+sep+scout];
          }
          // make this a scout report
          data = {report:"scout-data",data:data.value,t:ts(),scout:scout,troop:troop};
        } else if(troop) {
          // troop data object
          if(data.value.deleted) {
            deletes[troop] = 1;
            return cb();
          } else if(deletes[troop]) {
            // un-delete
            delete deletes[troop];
          }
          // make this a troop report.
          data = {report:"troop-data",data:data.value,t:ts(),troop:troop};
        } else {
          return cb();
        }

        // filter stale? no. if i can do it from this data they can.
        this.push(data);
        cb();
      })

      // can't leave errors unbound
      stream.on('error',function(err){
        s.emit('error',err);
      });

      return stream.pipe(s);
    },
    stats:function(troop,scout,options){
      if(typeof options == "string") options = {report:options};
      options = options||{};
      var report = options.report; // the report or reports you want to stream.
      var start = options.start||0; // the time t start streaming historical data.
      var end = options.end; // the time to stop sending historical data.
      var tail = options.end?false:options.tail;// keep streaming live after end has been reached.

      if(!end) end = sep;
      else end = bte(+end);

      var prefix = "tlog"+sep+troop+sep+scout+sep+report+sep;
      var opts = {start:prefix+bte(+start),end:prefix+end};
      
      // do this.
      var z = this;
      var stream;
      if(tail) {
        opts.old = true;
        
        stream = livestream(z.db,opts).on('sync',function(){
          this.emit('data',{value:{sync:true}});
        });
      } else {
        stream = z.db.createReadStream(opts)
      }

      var s = through2.obj(function(data,enc,cb){
        this.push(data.value);
        cb(); 
      });

      // can't leave errors unbound
      stream.on('error',function(err){
        s.emit('error',err);
      });

      return stream.pipe(s);
    },
    validateReport:function(report){
      // a report needs.
      if(!report.troop) return false;
      if(!report.scout) return false;
      if(!report.report) return false;
      return true;
    },
    saveReportsStream:function(){
      var z = this;
      var s = through2.obj(function(data,enc,cb){
        if(!data) return cb();// skip empty events.
        if(!z.validateReport(data)) {
          var e = new Error('invalid report object. missing required troop,scout or report '+JSON.stringify(report));
          e.code = z.errors.invalidreport;
          return this.emit('error',e);
        }
        // insert into sync section and stats section
        // {troop:,report:,scout:,data:,_t:}
        
        //
        // We want to find a way to use the board's internal event timestamp for absolute ordering/deduping but 
        //  i have a few parts to make before that can be true. 
        // without that you can never compare samples that have a greater rate than the latency to get to the server
        //
        data.t = ts();

        var key = "troops"+sep+data.troop+sep+data.scout+sep+'r'+sep+data.report;
        var history = "tlog"+sep+data.troop+sep+data.scout+sep+data.report+sep+bte(data.t);
        // update the live view
        this.push({type:"put",key:key,value:data});
        // update the history log
        this.push({type:"put",key:history,value:data});
        cb();
      });


      s.pipe(db.createWriteStream()).on('error',function(err){
        s.emit('error',err);
      });

      return s;
    },
    assignTroopKey:function(obj,cb){
      obj = obj||{};
      var z = this;
      if(!obj.id) return process.nextTick(function(){
        var e = new Error("missing required troop id assigning troop key");
        e.code = z.errors.key;
        cb(e);
      });

      var key = crypto.createHash('md5').update(crypto.randomBytes(210)).digest().toString('hex');
      if(obj.key) key = obj.key;
      z.db.put("key"+sep+key,obj.id,function(err){
        if(err) return cb(err);
        cb(false,key);
      });
    },
    getTroopIdFromKey:function(key,cb){
      this.db.get('key'+sep+key,cb);
    },
    getNextId:function fn(key,cb){
      key = 'ids'+sep+key;

      if(!fn.running) fn.running = {};
      if(fn.running[key]) return fn.running[key].push(cb); 
      fn.running[key] = [];

      db.get(key,function(err,value){

        if(err) {
          if((err+'').indexOf('NotFoundError') === -1){
            return cb(err);
          } else {
            value = 0;
          }
        }

        putKey(value+1,cb);

        function putKey (value,cb){
          db.put(key,value,function(err){
            if(fn.running[key].length){
              putKey(1+value,fn.running[key].shift());
            } else {
              delete fn.running[key];
            }
            cb(err,value);
          });
        }
      });
    }, 
    errors:{notroop:"NoTroop",key:"NoKeyId",noid:"MissingId",noscout:"NoScout",invalidreport:"InvalidReportObject"}
  }


  return o;

}
Beispiel #11
0
var Personality = function (options) {
  var self = this;

  if (!options) {
    options = {};
  }

  this.dbPath = options.db;
  this.db = Sublevel(level(this.dbPath, {
    createIfMissing: true,
    valueEncoding: 'json'
  }));

  this.profile = {
    meta: options.meta || {},
    systemData: {}
  };

  this.get = function (email, callback) {
    self.db.get(KEY + email, function (err, profile) {
      if (err || !profile) {
        callback(new Error('Not found'));
      } else {
        if (typeof profile === 'object') {
          callback(null, profile);
        } else {
          callback(new Error('Invalid JSON'));
        }
      }
    });
  };

  var validateProperties = function (userProfile, callback) {

    if (!userProfile) {
      callback(new Error('Profile non-existent'));
    } else if (!userProfile.hash) {
      callback(new Error('Invalid - email is missing'));
    } else if (!userProfile.display) {
      callback(new Error('Invalid - display name can not be empty'));
    } else {
      userProfile.hash = require('crypto').createHash('sha1').update(userProfile.hash).digest('hex');
      self.get(userProfile.hash, function (err, profile) {
        if (!err) {
          if (userProfile.hash === profile.hash) {
            callback(new Error('Invalid - user already registered'));
          } else if (userProfile.display === profile.display) {
            callback(new Error('Invalid - display name in use'));
          }
        } else {
          callback(null, userProfile);
        }
      });
    }
  };

  var setAll = function (profile, callback, isNew) {

    if (!profile.meta) {
      profile.meta = {};
    }

    for (var attr in self.profile.meta) {
      if (!profile.meta[attr]) {
        console.log(profile.meta[attr]);
        profile.meta[attr] = null;
      }
    }

    for (var attr in profile) {
      if (WHITELIST.indexOf(attr) === -1) {
        delete profile[attr];
      }
    }

    profile.systemData = self.profile.systemData;
    if (isNew) {
      profile.systemData.joined = Math.round(new Date() / 1000);
    }
    profile.systemData.updated = Math.round(new Date() / 1000);

    self.db.put(KEY + profile.hash, profile, function (err) {
      if (err) {
        callback(err);
      } else {
        callback(null, profile);
      }
    })
  };

  this.create = function (newProfile, callback) {
    validateProperties(newProfile, function (err, profile) {
      if (err) {
        callback(err);
      } else {
        setAll(profile, callback, true);
      }
    });
  };

  var validateUpdate = function (profile, hash, callback) {
    if (!profile) {
      callback(new Error('Invalid - no profile'));
    } else if (!profile.hash) {
      callback(new Error('Invalid - no email'));
    } else if (!profile.display) {
      callback(new Error('Invalid - no display'));
    } else {
      self.get(hash, function (err, exProfile) {
        if (err) {
          callback(err);
        } else {
          console.log(profile);
          console.log(exProfile);
          if (!profile.meta) {
            profile.meta = {};
          }
          for (var attr in exProfile.meta) {
            if (!profile.meta[attr]) {
               profile.meta[attr] = exProfile.meta[attr];
             }
          }
          callback(null, profile);
        }
      });
    }
  };

  this.update = function (profile, hash, callback) {
    validateUpdate(profile, hash, function (error, vProfile) {
      if (error) {
        callback(error);
      } else {
        setAll(vProfile, callback, false);
      }
    });
  };

  this.del = function (email, callback) {
    self.db.del(KEY + email);
    callback(null);
  };
};
// Example of LevelDB for Node.js

// Loading Module
var levelup = require('level');
var db = levelup('./testdb');

// Set values
db.put('Apple', 'red', function(err) {
        if (err) { console.log('Error', err); return; }
        testGet();
    });

function testGet () {
    db.get ('Apple', function (err, value) {
            if (err) { console.log('Error', err); return; }
            console.log('Apple =' + value);
            testBatch();
        });
}

function testBatch() {
    db.batch()
        .put('Mango', 'yellow')
        .put('Banana', 'yellow')
        .put('Kiwi', 'green')
        .write(function() { testGet2(); });
}


function testGet2 () {
    db.get('Banana', function(err, value) {
Beispiel #13
0
var level = require('level')
var db = level('posts.db', { valueEncoding: 'json' })
var to = require('to2')

var opts = {
  gt: 'post-time!',
  lt: 'post-time!~'
}
db.createReadStream(opts)
  .pipe(to.obj(function (row, enc, next) {
    var id = row.key.split('!').slice(-1)[0]
    db.get('post!' + id, function (err, doc) {
      var name = doc.name
      var time = doc.time
      var body = doc.body
      console.log(time + ' <' + name + '> ' + body)
      next()
    })
  }))
Beispiel #14
0
test('api', function (t) {
    t.plan(8);
    
    var db = level(path.join(tmpdir, 'db'));
    var compute = batchdb(db, {
        path: path.join(tmpdir, 'blob'),
        run: function () {
            var input = concat(function (body) {
                if (body.toString('utf8') === 'fail') {
                    dup.emit('error', new Error('yo'));
                    return;
                }
                
                t.equal(body.toString('utf8'), 'robot');
                output.end('beep boop\n');
            });
            var output = through();
            var dup = duplexer(input, output);
            return dup;
        }
    });
    
    compute.on('result', function (key, id) {
        compute.get(key).pipe(concat(function (body) {
            t.equal(body.toString('utf8'), 'robot');
        }));
        compute.get(id).pipe(concat(function (body) {
            t.equal(body.toString('utf8'), 'beep boop\n');
        }));
        
        var results = [];
        compute.list('result').pipe(through.obj(
            function (row, enc, next) {
                results.push(row);
                next();
            },
            function () {
                t.equal(results.length, 1);
                t.equal(results[0].value.hash, id);
            }
        ));
    });
    
    compute.add().end('robot');
    compute.add().end('fail');
    
    compute.on('fail', function (err) {
        t.equal(err.message, 'yo');
        var results = [];
        compute.list('fail').pipe(through.obj(write, end));
        function write (row, enc, next) {
            results.push(row);
            next();
        }
        function end () {
            t.equal(results.length, 1);
            t.deepEqual(results[0].value, { message: 'yo' });
        }
    });
    
    compute.run();
});
Beispiel #15
0
 init: function (name) {
   db = sublevel(levelup(name, { valueEncoding: 'json' }))
 },
Beispiel #16
0
'use strict';

var uuid = require('uuid');
var Boom = require('boom');
var nconf = require('nconf');
var level = require('level');
var ttl = require('level-ttl');

var profile = require('./profile');
var utils = require('./utils');
var ban = require('./ban');

nconf.argv().env().file({ file: 'local.json' });

var db = ttl(level('./db/logins', {
  createIfMissing: true,
  valueEncoding: 'json'
}));

var addNewUser = function (uid, phone, request, reply) {
  profile.db().put('uid!' + uid, phone, function (err) {
    if (err) {
      return reply(Boom.wrap(err, 400));
    }

    profile.db().put('user!' + phone, {
      uid: uid,
      phone: phone,
      secondary: {}
    }, function (err) {
      if (err) {
        return reply(Boom.wrap(err, 400));
Beispiel #17
0
var VeryLevelModel = require('../index.js');
var level = require('level');
var db = level(__dirname + '/testdb.db', {valueEncoding: 'json', errorIfExists: true});
var async = require('async');
var verymodel = require('verymodel');
var dbstreams = require('../lib/streams');

process.on('uncaughtException', function (err) {
    console.trace();
    console.error(err.stack);
    process.exit();
});

module.exports = {
    'Create multiple children': function (test) {
        var TM = new VeryLevelModel({idx: {}}, {db: db, prefix: 'TM'});
        var TMC = new VeryLevelModel({cidx: {}}, {db: db, prefix: 'RC'});
        var tm = TM.create({idx: 1});
        tm.save(function (err) {
            var cidx = 0;
            async.whilst(function () {
                cidx++;
                return cidx <= 10;
            },
            function (acb) {
                var tmc = tm.createChild(TMC, {cidx: cidx});
                tmc.save(function (err) {
                    acb(err);
                });
            },
            function (err) {
Beispiel #18
0
const levelup = require('level');
const db = levelup('./db');
const crypto = require('crypto');
const appio = require('./app.js').io;

let location = 'http://localhost:3000';

if (1 === process.env.PROD) {
  location = 'http://expresspolls.com';
}

const getId = () => {
  let randInt = getRandomInt(1, 999999999999999);
  let diffRandInt = getRandomInt(1, 999999999999999);
  const randStringLength = getRandomInt(1, 40);
  randInt = randInt.toString();
  diffRandInt = diffRandInt.toString();
  let randString = 'v84by0cmomcmw0-amckajapsodc9qj].dcq3785$';
  randString = randString.substring(1, randStringLength);
  randInt = randInt + randString + diffRandInt;
  const sha512 = crypto.createHash('sha512');
  sha512.update(randInt);
  const resultHash = sha512.digest("hex");
  const result = resultHash;
  const length = 32;
  const trimmedResult = result.substring(0, length);
  return trimmedResult;
};

const getRandomInt = (min, max) => {
    return Math.floor(Math.random() * (max - min + 1)) + min;
Beispiel #19
0
var fs = require('fs')
  , level = require('level')
  , s3sync = require('s3-sync')
  , readdirp = require('readdirp')

// To cache the S3 HEAD results and speed up the
// upload process. Usage is optional.
var db = level(__dirname + '/cache')
var creds = JSON.parse(fs.readFileSync('aws.json', 'utf8'))

var files = readdirp({
    root: 'public'
  , directoryFilter: ['!.git', '!cache']
})

// Takes the same options arguments as `knox`,
// plus some additional options listed above
var uploader = s3sync(db, {
    key: creds.accessKeyId
  , secret: creds.secretAccessKey
  , bucket: creds.bucketName
  , concurrency: 16
}).on('data', function(file) {
  console.log(file.fullPath + ' -> ' + file.url)
}).on('end', function() {
  console.log('Upload successfully!');
})

files.pipe(uploader)
Beispiel #20
0
var fs = require('fs');
var cities = require('cities1000');
var split = require('split');
var through = require('through');

var level = require('level');
var db = level(__dirname + '/data', { encoding: 'json' });

fs.createReadStream(cities.file)
    .pipe(split())
    .pipe(through(function (line) {
        var row = line.split('\t').reduce(function (acc, x, ix) {
            var key = cities.fields[ix];
            acc[key] = x;
            return acc;
        }, {});
        
        db.put(row.id, row);
        db.put(row.name.toLowerCase() + '!' + row.id, 0);
        row.alternativeNames.split(',').forEach(function (alt) {
            db.put(alt.toLowerCase() + '!' + row.id, 0);
        });
        console.log(row.name);
    }))
;
// 120.js
Beispiel #21
0
'use strict';

var level = require('level')
  , updates = require('../../npm/updates')
  , util = require('../util')
  , db = {}
  ;

db.packages = level('./db', {
  valueEncoding: 'json'
});


// find all objects match the search object search criteria
// and present a summary view
exports.all = function (done) {

  var stream = db.packages.createReadStream();

  var docs = {};

  stream.on('data', function (data) {
    
    var doc = data.value; // quick reference

    // delete excessive fields
    delete doc._id;
    delete doc.readme;
    delete doc._attachments;

    // replace all verions with the latest, and strip all metadata
Beispiel #22
0
import resource from 'resource-router-middleware';
import Pili from 'pili';
import level from 'level';

const db = level('./mydb');
const credentials = new Pili.Credentials("exempwg0U6rl1yL_2G4A_00weNY5kEdMeG7oYH04", "8dhh34fcyMD3tDobvwSrsWbhX-GC6GKvykOikmLm");
const hub = new Pili.Hub(credentials, "wantplus-1");

let pilipilis = [];

db.get("pilipili", function (err, value) {
  if (err) {
    if (err.notFound) {

    }
  }else{
    pilipilis = JSON.parse(value);
  }

});

export default ({ config }) => resource({

	/** Property name to store preloaded entity on `request`. */
	id : 'pilipili',

	/** For requests with an `id`, you can auto-load the entity.
	 *  Errors terminate the request, success sets `req[id] = data`.
	 */
	load(req, id, callback) {
		let pilipili = pilipilis.find( pilipili => pilipili.id===id ),
Beispiel #23
0
var VError = require('verror');
var level = require('level');
var config = require('../common/config');
var readTransactions = require('./readTransactions');
var generateStats = require('./generateStats');
var domain = require('domain');
var sublevel = require('level-sublevel');

var serverDomain = domain.create();
serverDomain.on('error', function (err) {
	console.error(err && err.stack);
	process.exit(1);
});
serverDomain.run(run);

var db = sublevel(level(config.dbPath, config.levelOptions));

// setup sublevels
var sublevels = {};
_(config.subLevels).each(function(sublevelName) {
	sublevels[sublevelName] = db.sublevel(sublevelName);
});

function run() {
	var transactions = [];
	var stats = [];

	console.log("Starting transaction file recovery");
	async.series([
		function (sCb) {
			readTransactions({
Beispiel #24
0
'use strict';

var data = require('./src/data');
var renderer = require('./src/renderer');
var nav = require('./src/navigation');
var notification = require('./src/notification');
var config = require('./src/config');
var flags = require('./src/watchflags');
var _ = require('./src/localization');
var level = require('level');
var utils = require('./src/utils');
var open = require('open');

var db = level('./jsnews-cache');
var currentGroup = -1;
var currentPost = null;
var STATE_LOADING = -1;
var caches = {
  group: STATE_LOADING,
  groupLike: STATE_LOADING,
  groupComment: STATE_LOADING,
  postLike: STATE_LOADING,
  postComment: STATE_LOADING,
  postCommentLike: STATE_LOADING
};
var cacheKeys = Object.keys(caches);
var lastCreatedPosts = [];

var FB = null;
var stopRender = false;
var follows = [];
Beispiel #25
0
var level = require('level');
var db = level('/tmp/build-server.db', {
    keyEncoding: require('bytewise'),
    valueEncoding: 'json'
});
var store = require('content-addressable-blob-store')({
    path: '/tmp/build-server.blob'
});
Beispiel #26
0
var ASSERT = require('assert').ok
var logger = require('..')
var level = require('level')
var db = level(__dirname + '/db1', { valueEncoding: 'json' })

describe('the client', function() {

  it('should be enabled and disabled on SIGUSR2', function(done) {

    var client = logger.createClient()
    var server = logger.createServer({ db: db })

    var count = 0

    server.on('log', function(data) {
      ++count
    })

    client.next = { foo: 100 }
    process.kill(process.pid, 'SIGUSR2')

    setTimeout(function() {
      client.next = { foo: 100 }
      ASSERT(count == 1)
      done()
    }, 100)
  })
})
Beispiel #27
0
var level = require('level');
var db = level('/tmp/build-server.db');
var compute = require('batchdb-shell')(db, { path: '/tmp/build-server.blob' });
compute.run();

var http = require('http');
var api = require('batchdb-web-api')(compute);
var ui = require('batchdb-web-ui')(compute);

var server = http.createServer(function (req, res) {
    if (api.exec(req, res)) return;
    
    
    res.statusCode = 404;
    res.end('not found\n');
});
server.listen(5000);
Beispiel #28
0
'use strict';
var path     =  require('path')
  , type     =  require('../lib/type')
  , printKey =  require('../lib/print-key')
  , key      =  require('../lib/key-by-values')
  , vehicles =  require('./sample-data').vehicles

var level = require('level')
  , dblocation = path.join(__dirname, '..', 'data/index-keywords.db');

var db = level(dblocation, { valueEncoding: 'utf8' }, function () {
  var indexes = key(vehicles);
  db.batch(
      type.del(indexes).concat(type.put(indexes))
    , function () {
        db.createReadStream({ 
            keys   :  true
          , values :  false
          , start  :  'slow'
          , end    :  'slow\xff'
        })
        .on('data', printKey)
        .on('close', function () { db.close() })
    }
  )
})
Beispiel #29
0
module.exports = function () {
    return level(
        __dirname + '/../data/skills.db',
        { valueEncoding: 'json' }
    );
};
Beispiel #30
0
const level = require('level');
const chainDB = './validation';
const db = level(chainDB);

// Add data to levelDB with key/value pair
exports.addLevelDBData = function (key, data) {
    return new Promise(function (resolve, reject) {
        db.put(key, data, function (error) {
            if (error) {
                reject('Block ' + key + ' submission failed', error);
            } else {
                resolve(data);
            }
        });
    });
};

// Get data from levelDB with key
exports.getLevelDBData = function (key) {
    return new Promise(function (resolve, reject) {
        db.get(key, function (error, response) {
            if (error) {
                reject('Not found!', error);
            } else {
                resolve(JSON.parse(response));
            }
        });
    });
};