From b8f0732cfdc66da820fbc0e8c1ca6950c1393a4b Mon Sep 17 00:00:00 2001 From: Nikolay Damyanov Date: Fri, 13 Nov 2015 18:13:21 +0200 Subject: [PATCH] Adding custiomization options for timestamps. Closes #86 --- lib/schema.js | 6 +++--- lib/table.js | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/schema.js b/lib/schema.js index 977adde..31a6f9d 100644 --- a/lib/schema.js +++ b/lib/schema.js @@ -22,7 +22,7 @@ internals.configSchema = Joi.object().keys({ tableName : Joi.alternatives().try(Joi.string(), Joi.func()), indexes : Joi.array().includes(internals.secondaryIndexSchema), schema : Joi.object(), - timestamps : Joi.boolean().default(false), + timestamps : Joi.alternatives().try(Joi.boolean().default(false), Joi.func()), createdAt : Joi.alternatives().try(Joi.string(), Joi.boolean()), updatedAt : Joi.alternatives().try(Joi.string(), Joi.boolean()) }).required(); @@ -125,11 +125,11 @@ var Schema = module.exports = function (config) { } if(self.createdAt !== false) { - valids[createdAtParamName] = Joi.date(); + valids[createdAtParamName] = Joi.alternatives().try(Joi.date(), Joi.number()); } if(self.updatedAt !== false) { - valids[updatedAtParamName] = Joi.date(); + valids[updatedAtParamName] = Joi.alternatives().try(Joi.date(), Joi.number()); } var extended = self._modelSchema.keys(valids); diff --git a/lib/table.js b/lib/table.js index fcc9089..f814caa 100644 --- a/lib/table.js +++ b/lib/table.js @@ -128,7 +128,7 @@ Table.prototype.create = function (item, options, callback) { var paramName = _.isString(self.schema.createdAt) ? self.schema.createdAt : 'createdAt'; if(self.schema.timestamps && self.schema.createdAt !== false && !_.has(data, paramName)) { - data[paramName] = new Date().toISOString(); + data[paramName] = (typeof self.schema.timestamps === 'function' ? self.schema.timestamps() : new Date().toISOString()); } return callback(null, data); @@ -228,7 +228,7 @@ Table.prototype.update = function (item, options, callback) { var paramName = _.isString(self.schema.updatedAt) ? self.schema.updatedAt : 'updatedAt'; if(self.schema.timestamps && self.schema.updatedAt !== false && !_.has(item, paramName)) { - item[paramName] = new Date().toISOString(); + item[paramName] = (typeof self.schema.timestamps === 'function' ? self.schema.timestamps() : new Date().toISOString()); } return callback(null, item);