UNPKG

@jitterbit/npdynamodb

Version:

A Node.js Simple Query Builder and ORM for AWS DynamoDB.

60 lines (45 loc) 1.34 kB
'use strict'; var _ = require('lodash'); var util = require('util'); var utils = require('../utils'); var npdynamodb = require('../npdynamodb'); var BaseModel = require('./model'); module.exports = function(tableName, prototypeProps, staticProps){ var reservedProps = ['hashKey', 'rangeKey', 'npdynamodb']; function Model(attributes){ this.tableName = tableName; _.extend(this, _.pick.apply(null, [prototypeProps].concat(reservedProps))); this._attributes = attributes || {}; this._builder = this.npdynamodb().table(tableName); } _.extend(Model.prototype, _.clone(BaseModel.prototype)); _.each(_.omit.apply(null, [prototypeProps].concat(reservedProps)), function(val, name){ if(val.hasOwnProperty('bind')) { Model.prototype[name] = function(){ return val.bind(this, _.toArray(arguments)); }; }else{ Model.prototype[name] = val; } }); _.each([ 'find', 'where', 'query', 'fetch', 'save' ], function(_interface){ Model[_interface] = function(){ var model = new Model(); return model[_interface].apply(model, _.toArray(arguments)); }; }); _.each(staticProps, function(val, name){ if(val.hasOwnProperty('bind')) { Model[name] = val.bind(Model); }else{ Model[name] = val; } }); return Model; };