Mailspring/packages/nylas-core/hook-transaction-log.js

33 lines
1,018 B
JavaScript
Raw Normal View History

2016-06-24 07:28:51 +08:00
const PubsubConnector = require('./pubsub-connector')
module.exports = (db, sequelize) => {
const parseHookData = ({dataValues, _changed, $modelOptions}) => {
return {
objectId: dataValues.id,
modelName: $modelOptions.name.singular,
changedFields: _changed,
}
}
const isTransaction = ({$modelOptions}) => {
2016-06-30 05:58:38 +08:00
return $modelOptions.name.singular === "transaction"
2016-06-24 07:28:51 +08:00
}
const transactionLogger = (type) => {
return (sequelizeHookData) => {
if (isTransaction(sequelizeHookData)) return;
const transactionData = Object.assign({type: type},
parseHookData(sequelizeHookData)
);
db.Transaction.create(transactionData);
transactionData.object = sequelizeHookData.dataValues;
PubsubConnector.notifyDelta(db.accountId, transactionData);
2016-06-24 07:28:51 +08:00
}
}
sequelize.addHook("afterCreate", transactionLogger("create"))
sequelize.addHook("afterUpdate", transactionLogger("update"))
sequelize.addHook("afterDelete", transactionLogger("delete"))
}