Socket
Socket
Sign inDemoInstall

viewmodel

Package Overview
Dependencies
Maintainers
2
Versions
109
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

viewmodel - npm Package Compare versions

Comparing version 1.8.1 to 1.9.0

52

lib/databases/inmemory.js

@@ -103,2 +103,52 @@ var util = require('util'),

bulkCommit: function(vms, callback) {
this.checkConnection();
var col = store[this.collectionName];
if (!col) {
col = {};
store[this.collectionName] = col;
}
if (!vms) return callback(new Error());
var bulkOperation = [];
var err = null;
_.each(vms, function(vm) {
if (!vm.actionOnCommit) return;
switch(vm.actionOnCommit) {
case 'delete':
if (col[vm.id] && vm.has('_hash') && col[vm.id]._hash && vm.get('_hash') !== col[vm.id]._hash) {
err = new ConcurrencyError();
return;
}
delete col[vm.id];
return;
case 'create':
if (col[vm.id]) {
err = new ConcurrencyError();
return;
}
// Intended Fall-through
case 'update':
if (col[vm.id] && vm.has('_hash') && col[vm.id]._hash && vm.get('_hash') !== col[vm.id]._hash) {
err = new ConcurrencyError();
return;
}
vm.actionOnCommit = 'update';
vm.set('_hash', uuid().toString());
// var obj = vm.toJSON();
var obj = vm.attributes;
col[obj.id] = obj;
return;
default:
return;
}
});
callback(err, vms);
},
commit: function(vm, callback) {

@@ -113,3 +163,3 @@ this.checkConnection();

if(!vm.actionOnCommit) return callback(new Error());
if (!vm.actionOnCommit) return callback(new Error());

@@ -116,0 +166,0 @@ switch(vm.actionOnCommit) {

@@ -108,2 +108,18 @@ var util = require('util'),

self.db.admin().serverStatus(function(err, info) {
if (err) {
delete self.bulkCommit;
return;
}
var splittedVersion = info.version.split('.');
var major = parseInt(splittedVersion[0], 10);
var minor = parseInt(splittedVersion[1], 10);
if (major < 3 || (major === 3 && minor < 2)) {
delete self.bulkCommit;
return;
}
});
var finish = function (err) {

@@ -243,2 +259,64 @@ self.isConnected = true;

bulkCommit: function (vms, callback) {
this.checkConnection();
if (!vms) return callback(new Error());
var bulkOperation = [];
var deletedCount = 0;
var insertedCount = 0;
var modifiedCount = 0;
_.each(vms, function(vm) {
if (!vm.actionOnCommit) return;
switch(vm.actionOnCommit) {
case 'delete':
if (!vm.has('_hash')) return;
bulkOperation.push({ deleteOne: { filter: { _id: vm.id, _hash: vm.get('_hash') } } });
deletedCount++;
break;
case 'create':
vm.set('_hash', new ObjectID().toString());
// obj = vm.toJSON();
obj = vm.attributes;
obj._id = obj.id;
bulkOperation.push({ insertOne: obj });
vm.actionOnCommit = 'update';
insertedCount++;
break;
case 'update':
var currentHash = vm.get('_hash');
vm.set('_hash', new ObjectID().toString());
// obj = vm.toJSON();
obj = vm.attributes;
obj._id = obj.id;
var query = { _id: obj._id };
if (currentHash) {
query._hash = currentHash;
}
bulkOperation.push({ updateOne: { filter: query, update: obj, upsert: !currentHash } });
vm.actionOnCommit = 'update';
modifiedCount++;
break;
default:
return;
}
});
this.collection.bulkWrite(bulkOperation, { ordered: false }, function(err, result) {
if (err && err.message && err.message.indexOf('duplicate key') >= 0) {
return callback(new ConcurrencyError());
}
if (err) return callback(err);
if (result.deletedCount < deletedCount) return callback(new ConcurrencyError());
if (result.insertedCount < insertedCount) return callback(new ConcurrencyError());
if (result.modifiedCount < modifiedCount) return callback(new ConcurrencyError());
callback(null, vms);
});
},
commit: function(vm, callback) {

@@ -248,3 +326,3 @@

if(!vm.actionOnCommit) return callback(new Error());
if (!vm.actionOnCommit) return callback(new Error('actionOnCommit is not defined!'));

@@ -251,0 +329,0 @@ var obj;

2

package.json
{
"author": "adrai",
"name": "viewmodel",
"version": "1.8.1",
"version": "1.9.0",
"private": false,

@@ -6,0 +6,0 @@ "main": "index.js",

@@ -197,2 +197,16 @@ # Introduction

## Some implementations support bulkCommit
dummyRepo.bulkCommit([vm1, vm2, vm3], function(err) {
if(err) {
console.log('ohhh :-(');
return;
}
});
currently supported by:
- inmemory
- mongodb
## mongodb

@@ -199,0 +213,0 @@ For mongodb you can define indexes for performance boosts in find function.

@@ -0,1 +1,4 @@

## [v1.9.0](https://github.com/adrai/node-viewmodel/compare/v1.8.1...v1.9.0)
- introduce optional bulkCommit
## [v1.8.1](https://github.com/adrai/node-viewmodel/compare/v1.8.0...v1.8.1)

@@ -2,0 +5,0 @@ - remove deprecated option max_attempts from redis options

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc