[local-sync] Fix transaction log to only ignore syncState

This commit is contained in:
Ben Gotow 2016-11-30 16:22:29 -08:00
parent 2476cae297
commit 935d8cf141
2 changed files with 12 additions and 5 deletions

View file

@ -1,13 +1,20 @@
const _ = require('underscore');
module.exports = (db) => {
for (const modelName of Object.keys(db)) {
const model = db[modelName];
const allIgnoredFields = (changedFields) => {
return _.isEqual(changedFields, ['syncState']);
}
model.beforeCreate('increment-version-c', (instance) => {
instance.version = 1;
});
model.beforeUpdate('increment-version-u', (instance) => {
instance.version = instance.version ? instance.version + 1 : 1;
if (!allIgnoredFields(Object.keys(instance._changed))) {
instance.version = instance.version ? instance.version + 1 : 1;
}
});
}
}

View file

@ -10,20 +10,20 @@ module.exports = (db, sequelize) => {
}
const allIgnoredFields = (changedFields) => {
const IGNORED_FIELDS = ["syncState", "version"];
return _.difference(Object.keys(changedFields), IGNORED_FIELDS).length === 0
return _.isEqual(changedFields, ['syncState']);
}
const transactionLogger = (event) => {
return ({dataValues, _changed, $modelOptions}) => {
if ((isTransaction($modelOptions) || allIgnoredFields(_changed))) {
const changedFields = Object.keys(_changed)
if ((isTransaction($modelOptions) || allIgnoredFields(changedFields))) {
return;
}
const transactionData = Object.assign({event}, {
object: $modelOptions.name.singular,
objectId: dataValues.id,
changedFields: Object.keys(_changed),
changedFields: changedFields,
});
db.Transaction.create(transactionData).then((transaction) => {