Skip to content

Commit 9a78cc7

Browse files
committed
handle deletions
1 parent fca79eb commit 9a78cc7

5 files changed

+25
-4
lines changed

run/models/tokenbalancechange.js

+9
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ module.exports = (sequelize, DataTypes) => {
1717
TokenBalanceChange.belongsTo(models.Transaction, { foreignKey: 'transactionId', as: 'transaction' });
1818
TokenBalanceChange.belongsTo(models.Workspace, { foreignKey: 'workspaceId', as: 'workspace' });
1919
TokenBalanceChange.belongsTo(models.TokenTransfer, { foreignKey: 'tokenTransferId', as: 'tokenTransfer' });
20+
TokenBalanceChange.hasOne(models.TokenBalanceChangeEvent, { foreignKey: 'tokenBalanceChangeId', as: 'event' });
2021
TokenBalanceChange.hasOne(models.Contract, {
2122
sourceKey: 'token',
2223
foreignKey: 'address',
@@ -40,6 +41,14 @@ module.exports = (sequelize, DataTypes) => {
4041
});
4142
}
4243

44+
async safeDestroy(transaction) {
45+
const event = await this.getEvent();
46+
if (event)
47+
await event.destroy({ transaction });
48+
49+
return this.destroy({ transaction });
50+
}
51+
4352
async insertAnalyticEvent(sequelizeTransaction) {
4453
const transaction = await this.getTransaction();
4554
const contract = await this.getContract();

run/models/tokentransfer.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,19 @@ module.exports = (sequelize, DataTypes) => {
3232
},
3333
constraints: false
3434
});
35+
TokenTransfer.hasOne(models.TokenTransferEvent, { foreignKey: 'tokenTransferId', as: 'event' });
3536
TokenTransfer.hasMany(models.TokenBalanceChange, { foreignKey: 'tokenTransferId', as: 'tokenBalanceChanges' });
3637
}
3738

3839
async safeDestroy(transaction) {
3940
const tokenBalanceChanges = await this.getTokenBalanceChanges();
4041
for (let i = 0; i < tokenBalanceChanges.length; i++)
41-
await tokenBalanceChanges[i].destroy({ transaction});
42+
await tokenBalanceChanges[i].safeDestroy(transaction);
43+
44+
const event = await this.getEvent();
45+
if (event)
46+
await event.destroy({ transaction });
47+
4248
return this.destroy({ transaction });
4349
}
4450

run/models/tokentransferevent.js

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ module.exports = (sequelize, DataTypes) => {
1010
* The `models/index` file will call this method automatically.
1111
*/
1212
static associate(models) {
13-
// define association here
1413
}
1514
}
1615
TokenTransferEvent.init({

run/models/transaction.js

+7
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ module.exports = (sequelize, DataTypes) => {
3636
constraints: false
3737
});
3838
Transaction.hasOne(models.TransactionReceipt, { foreignKey: 'transactionId', as: 'receipt' });
39+
Transaction.hasOne(models.TransactionEvent, { foreignKey: 'transactionId', as: 'event' });
3940
Transaction.hasMany(models.TokenTransfer, { foreignKey: 'transactionId', as: 'tokenTransfers' });
4041
Transaction.hasMany(models.TokenBalanceChange, { foreignKey: 'transactionId', as: 'tokenBalanceChanges' });
4142
Transaction.hasMany(models.TransactionTraceStep, { foreignKey: 'transactionId', as: 'traceSteps' });
@@ -45,9 +46,15 @@ module.exports = (sequelize, DataTypes) => {
4546
const receipt = await this.getReceipt();
4647
if (receipt)
4748
await receipt.safeDestroy(transaction);
49+
4850
const traceSteps = await this.getTraceSteps();
4951
for (let i = 0; i < traceSteps.length; i++)
5052
await traceSteps[i].destroy(transaction);
53+
54+
const event = await this.getEvent();
55+
if (event)
56+
await event.destroy({ transaction });
57+
5158
return this.destroy({ transaction });
5259
}
5360

run/models/transactionreceipt.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ module.exports = (sequelize, DataTypes) => {
1616
* The `models/index` file will call this method automatically.
1717
*/
1818
static associate(models) {
19-
TransactionReceipt.belongsTo(models.Transaction, { foreignKey: 'transactionId', as: 'transaction' });
20-
TransactionReceipt.hasMany(models.TransactionLog, { foreignKey: 'transactionReceiptId', as: 'logs' });
19+
TransactionReceipt.hasMany(models.TransactionLog, { foreignKey: 'transactionReceiptId', as: 'logs' });
20+
TransactionReceipt.belongsTo(models.Transaction, { foreignKey: 'transactionId', as: 'transaction' });
2121
}
2222

2323
async insertAnalyticEvent(sequelizeTransaction) {

0 commit comments

Comments
 (0)