CleverStack/node-seed

View on GitHub
lib/utils/model/behaviours/timeStampable.js

Summary

Maintainability
A
1 hr
Test Coverage
module.exports.setup = function timeStampableBehaviour(Klass) {
  if (Klass.timeStampable === true) {
    Klass.fields.createdAt = {
      type        : Date,
      columnName  : Klass.createdAt
    };
    if (Klass.createdAt !== 'createdAt') {
      Klass.aliases.push({
        fieldName   : 'createdAt',
        columnName  : Klass.createdAt
      });
    }

    Klass.fields.updatedAt = {
      type        : Date,
      columnName  : Klass.updatedAt
    };
    if (Klass.updatedAt !== 'updatedAt') {
      Klass.aliases.push({
        fieldName   : 'updatedAt',
        columnName  : Klass.updatedAt
      });
    }
  }
};

module.exports.beforeCreate = function beforeCreateTimeStampableModel(modelData, callback) {
  if (this.type === 'ODM' && !!this.timeStampable) {
    modelData[this.createdAt] = new Date();
    modelData[this.updatedAt] = new Date();
  }
  if (callback) {
    callback(null);
  }
};

module.exports.beforeUpdate = function beforeUpdateTimeStampableModel(modelData, callback) {
  if (this.type === 'ODM' && !!this.timeStampable) {
    modelData[this.updatedAt] = new Date();
  }
  if (callback) {
    callback(null);
  }
};