UNPKG

simple-node-db

Version:

A document database with query, insert, update, backup/restore and replication implemented on top of levelup, leveldown, and memdown.

116 lines (87 loc) 2.51 kB
/** * * * @author: darryl.west@roundpeg.com * @created: 5/24/14 5:16 PM */ const dash = require("lodash" ); const ulid = require('ulid' ); const fixtureData = require('random-fixture-data'); const TestDbDataset = function() { 'use strict'; const dataset = this; // the user model const User = function(params) { this.id = params.id; this.dateCreated = params.dateCreated; this.lastUpdated = params.lastUpdated; this.version = params.version; this.name = params.name; this.email = params.email; this.token = params.token; this.status = params.status; }; /** * create a standard ulid * @returns uulid */ this.createULID = function() { return ulid(); }; /** * generate object for a base model object, id, dateCreated, lastUpdated and version * * @returns obj with values id, dateCreated, lastUpdated, version */ this.createBaseModel = function() { const obj = {}; obj.id = ulid().replace(/-/g, ''); const dt = new Date(); obj.dateCreated = dt; obj.lastUpdated = dt; obj.version = 0; return obj; }; this.createUserList = function(count) { if (!count) count = 25; const list = []; while ( count-- > 0 ) { list.push( dataset.createUserModel() ); } return list; }; this.createPutBatch = function(domain, list, batch) { if (!batch) batch = []; list.forEach(function(item) { const key = domain + ':' + item.id; const value = JSON.stringify( item ); batch.push( { type:'put', key:key, value:value }); }); return batch; }; this.createUserModel = function() { const params = {}; params.id = ulid().replace(/-/g, ''); params.dateCreated = new Date( '2014-01-01T02:03:04' ); params.lastUpdated = new Date( '2014-01-02T03:04:05' ); params.version = 0; params.name = fixtureData.name; params.email = fixtureData.email; params.token = ulid(); params.status = 'active'; return new User( params ); }; }; /** * extend the child class * * @param child * @returns parent */ TestDbDataset.extend = function(child) { 'use strict'; const parent = new TestDbDataset(); dash.extend( child, parent ); return parent; }; module.exports = TestDbDataset;