Socket
Socket
Sign inDemoInstall

keydb

Package Overview
Dependencies
Maintainers
3
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

keydb - npm Package Compare versions

Comparing version 0.1.7 to 0.1.8

47

lib/drivers/dynamo.js

@@ -125,2 +125,11 @@ var aws = require('aws-sdk');

};
if (table.rangeKey) {
schema.KeySchema.push({
AttributeName: table.rangeKey,
KeyType: 'RANGE'
});
schema.AttributeDefinitions.push(
toAttrDef(table.rangeKey, table.properties[table.rangeKey])
);
}
return db.createTable(schema);

@@ -146,5 +155,11 @@ };

var primaryKey = options.tables[msg.table].primaryKey;
var rangeKey = options.tables[msg.table].rangeKey;
expected[primaryKey] = {
Exists: false
};
if (rangeKey) {
expected[rangeKey] = {
Exists: false
};
}
return ops.set(msg, expected);

@@ -155,4 +170,11 @@ },

if (msg.key) {
var keyAttr = options.tables[msg.table].primaryKey;
attributes[keyAttr] = msg.key;
var primaryKey = options.tables[msg.table].primaryKey;
var rangeKey = options.tables[msg.table].rangeKey;
if (rangeKey) {
var parts = msg.key.split('/');
attributes[primaryKey] = parts[0];
attributes[rangeKey] = parts[1];
} else {
attributes[primaryKey] = msg.key;
}
}

@@ -174,4 +196,10 @@ var item = toItem(attributes);

var key = {};
var keyAttr = options.tables[msg.table].primaryKey;
key[keyAttr] = toAttr(msg.key);
var primaryKey = options.tables[msg.table].primaryKey;
var rangeKey = options.tables[msg.table].rangeKey;
key[primaryKey] = toAttr(msg.key);
if (rangeKey) {
var parts = msg.key.split('/');
key[primaryKey] = toAttr(parts[0]);
key[rangeKey] = toAttr(parts[1]);
}
return db.getItem({

@@ -185,5 +213,8 @@ TableName: msg.table,

var value = toValue(res.Item);
if (keyAttr in value) {
delete value[keyAttr];
if (primaryKey in value) {
delete value[primaryKey];
}
if (rangeKey && rangeKey in value) {
delete value[rangeKey];
}
return {

@@ -198,2 +229,3 @@ key: msg.key,

var primaryKey = options.tables[msg.table].primaryKey;
var rangeKey = options.tables[msg.table].rangeKey;
var key = {};

@@ -203,2 +235,5 @@ if (msg.filters[primaryKey]) {

}
if (msg.filters[rangeKey]) {
key[rangeKey] = toAttr(msg.filters[rangeKey]);
}
var req = {

@@ -205,0 +240,0 @@ TableName: msg.table,

2

package.json
{
"name": "keydb",
"version": "0.1.7",
"version": "0.1.8",
"description": "Key/value data/query API to use on the server and in the browser.",

@@ -5,0 +5,0 @@ "main": "index-server.js",

@@ -22,4 +22,4 @@ /* global describe, it */

var testDatabase = function (type, ops) {
ops = ops || {};
var testDatabase = function (type, options) {
options = options || {};
describe(type + ' driver test', function () {

@@ -46,2 +46,20 @@ var db = keydb();

primaryKey: 'user_id'
},
log: {
properties: {
user_id: {
type: 'string',
maxLength: 100
},
time_stamp: {
type: 'string',
maxLength: 100
},
action: {
type: 'string',
maxLength: 100
}
},
primaryKey: 'user_id',
rangeKey: 'time_stamp'
}

@@ -104,3 +122,3 @@ },

});
if (ops.get) {
if (options.get) {
it('should get updated', function () {

@@ -125,3 +143,3 @@ return db({op: 'get', table: 'user', key: 'joe'})

});
if (ops.get) {
if (options.get) {
it('should not get deleted', function () {

@@ -131,3 +149,3 @@ return expect(db({op: 'get', table: 'user', key: 'joe'})).to.be.rejectedWith(keydb.error.NotFound);

}
if (ops.set) {
if (options.set) {
it('should set value', function () {

@@ -144,2 +162,14 @@ var promise = db({op: 'set', key: 'joe', value: {first_name: 'Joe', last_name: 'Baz'}, table: 'user'})

}
if (options.range) {
it('should log action for user', function () {
return db({op: 'set', key: 'joe/2014-01-01T12:00:00Z', table: 'log', value: {action: 'login'}});
});
it('should get action for user', function () {
var promise = db({op: 'get', key: 'joe/2014-01-01T12:00:00Z', table: 'log'})
.then(function (msg) {
return msg.value;
});
return expect(promise).to.eventually.eql({action: 'login'});
});
}
});

@@ -149,2 +179,2 @@ };

testDatabase('mysql');
testDatabase('dynamo', {get: true, set: true});
testDatabase('dynamo', {get: true, set: true, range: true});
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