mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-09-21 07:46:06 +08:00
[local-sync] Fix transaction log to only ignore syncState
This commit is contained in:
parent
2476cae297
commit
935d8cf141
|
@ -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;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) => {
|
||||
|
|
Loading…
Reference in a new issue