fireball-db
Version:
a lightweight model wrapper for DynamoDB
75 lines (66 loc) • 1.75 kB
JavaScript
var curried_prefix, curryRight, ensure_prefix, expression_names, expression_values, isFunction, map_parameters, mapping, ref;
ref = require('lodash'), curryRight = ref.curryRight, isFunction = ref.isFunction;
ensure_prefix = function(params, prefix) {
var key, results, value;
results = {};
for (key in params) {
value = params[key];
if (!key.startsWith(prefix)) {
key = "" + prefix + key;
}
results[key] = value;
}
return results;
};
curried_prefix = curryRight(ensure_prefix);
expression_names = curried_prefix('#');
expression_values = curried_prefix(':');
mapping = {
names: function(key, value) {
return {
key: 'ExpressionAttributeNames',
value: expression_names(value)
};
},
values: function(key, value) {
return {
key: 'ExpressionAttributeValues',
value: expression_values(value)
};
},
condition: 'ConditionExpression',
update: 'UpdateExpression',
projection: 'ProjectionExpression',
filter: 'FilterExpression',
key_condition: 'KeyConditionExpression',
index: 'IndexName',
limit: 'Limit',
forward: 'ScanIndexForward'
};
map_parameters = function(params) {
var key, mapped, mapper, result, value;
result = {};
for (key in params) {
value = params[key];
mapper = mapping[key];
if (mapper != null) {
mapped = {
key: mapper,
value: value
};
if (isFunction(mapper)) {
mapped = mapper(key, value);
}
result[mapped.key] = mapped.value;
} else {
result[key] = value;
}
}
return result;
};
module.exports = {
ensure_prefix: ensure_prefix,
expression_names: expression_names,
expression_values: expression_values,
map_parameters: map_parameters
};