Skip to content

Commit e9e2ad1

Browse files
committed
remove BankBalance model and drop table
1 parent f05ab44 commit e9e2ad1

File tree

9 files changed

+50
-593
lines changed

9 files changed

+50
-593
lines changed

src/db/connection.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import {
1616
AccountWebhookCodeIdSet,
1717
AccountWebhookEvent,
1818
AccountWebhookEventAttempt,
19-
BankBalance,
2019
BankDenomBalance,
2120
BankStateEvent,
2221
Block,
@@ -50,7 +49,6 @@ type LoadDbOptions = {
5049
const getModelsForType = (type: DbType): SequelizeOptions['models'] =>
5150
type === DbType.Data
5251
? [
53-
BankBalance,
5452
BankDenomBalance,
5553
BankStateEvent,
5654
Block,

src/db/dependable.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { ComputationDependentKey, DependableEventModel } from '@/types'
22

33
import {
4-
BankBalance,
54
BankDenomBalance,
65
BankStateEvent,
76
Extraction,
@@ -19,7 +18,6 @@ export const getDependableEventModels = (): typeof DependableEventModel[] => [
1918
WasmStateEventTransformation,
2019
WasmTxEvent,
2120
StakingSlashEvent,
22-
BankBalance,
2321
BankDenomBalance,
2422
BankStateEvent,
2523
FeegrantAllowance,
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
'use strict'
2+
3+
/** @type {import('sequelize-cli').Migration} */
4+
module.exports = {
5+
async up(queryInterface) {
6+
await queryInterface.dropTable('BankBalances')
7+
},
8+
9+
async down() {
10+
throw new Error('Cannot revert this migration')
11+
},
12+
}

src/db/models/BankBalance.ts

Lines changed: 0 additions & 88 deletions
This file was deleted.

src/db/models/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ export * from './AccountWebhook'
66
export * from './AccountWebhookCodeIdSet'
77
export * from './AccountWebhookEvent'
88
export * from './AccountWebhookEventAttempt'
9-
export * from './BankBalance'
109
export * from './BankDenomBalance'
1110
export * from './BankStateEvent'
1211
export * from './Block'

src/formulas/env.ts

Lines changed: 19 additions & 148 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { Op, QueryTypes, Sequelize } from 'sequelize'
22

33
import {
4-
BankBalance,
54
BankDenomBalance,
65
BankStateEvent,
76
Block,
@@ -1066,80 +1065,23 @@ export const getEnv = ({
10661065
throw new Error('Incorrect event type.')
10671066
}
10681067

1069-
// Call hook.
1070-
if (bankDenomBalance) {
1071-
await onFetch?.([bankDenomBalance])
1072-
}
1073-
10741068
// Cache bank balance denom, null if nonexistent.
10751069
if (cachedBalanceDenom === undefined) {
10761070
cache.events[bankDenomBalanceDependentKey] = bankDenomBalance
10771071
? [bankDenomBalance]
10781072
: null
10791073
}
10801074

1081-
// Use BankBalance if exists.
1082-
const bankBalanceDependentKey = getDependentKey(
1083-
BankBalance.dependentKeyNamespace,
1084-
address
1085-
)
1086-
1087-
const cachedBalance = cache.events[bankBalanceDependentKey]
1088-
// Only one bank balance exists per address, since it represents the latest
1089-
// set of all balances. Apply the block height filter to the denom to ensure
1090-
// we don't access future balances if we're querying a past block height.
1091-
const bankBalance =
1092-
// If undefined, we haven't tried to fetch it yet. If not undefined,
1093-
// either it exists or it doesn't (null).
1094-
cachedBalance !== undefined
1095-
? cachedBalance?.[0]
1096-
: await BankBalance.findOne({
1097-
where: {
1098-
address,
1099-
balances: {
1100-
[denom]: {
1101-
[Op.not]: null,
1102-
},
1103-
},
1104-
denomUpdateBlockHeights: {
1105-
[denom + '::bigint']: blockHeightFilter,
1106-
},
1107-
},
1108-
})
1109-
1110-
if (bankBalance && !(bankBalance instanceof BankBalance)) {
1111-
throw new Error('Incorrect event type.')
1112-
}
1113-
1114-
// Cache bank balance, null if nonexistent.
1115-
if (cachedBalance === undefined) {
1116-
cache.events[bankBalanceDependentKey] = bankBalance ? [bankBalance] : null
1117-
}
1118-
1119-
if (bankBalance) {
1075+
if (bankDenomBalance) {
11201076
// Call hook.
1121-
await onFetch?.([bankBalance])
1122-
}
1123-
1124-
// Choose the latest balance.
1125-
if (bankDenomBalance || bankBalance) {
1126-
const balance =
1127-
bankDenomBalance &&
1128-
bankBalance?.balances?.[denom] &&
1129-
bankBalance.denomUpdateBlockHeights?.[denom]
1130-
? BigInt(bankDenomBalance.blockHeight) >
1131-
BigInt(bankBalance.denomUpdateBlockHeights[denom])
1132-
? bankDenomBalance.balance
1133-
: bankBalance.balances[denom]
1134-
: bankDenomBalance?.balance || bankBalance?.balances[denom]
1135-
1136-
if (balance) {
1137-
return balance
1138-
}
1077+
await onFetch?.([bankDenomBalance])
1078+
1079+
// Return balance.
1080+
return bankDenomBalance.balance
11391081
}
11401082

1141-
// Use BankStateEvent if no BankBalance/BankDenomBalance and this address is
1142-
// a contract that we keep history for.
1083+
// Use BankStateEvent if no BankDenomBalance and this address is a contract
1084+
// that we keep history for.
11431085
const historyExists = await contractMatchesCodeIdKeys(
11441086
address,
11451087
...BANK_HISTORY_CODE_IDS_KEYS
@@ -1197,42 +1139,6 @@ export const getEnv = ({
11971139
}
11981140

11991141
const getBalances: FormulaBalancesGetter = async (address) => {
1200-
// Use BankBalance and BankDenomBalance if exists.
1201-
const bankBalanceDependentKey = getDependentKey(
1202-
BankBalance.dependentKeyNamespace,
1203-
address
1204-
)
1205-
const cachedBalance = cache.events[bankBalanceDependentKey]
1206-
1207-
// Only one bank balance exists per address, since it represents the latest
1208-
// set of all balances.
1209-
const bankBalance: BankBalance | undefined | null =
1210-
// If undefined, we haven't tried to fetch it yet. If not undefined,
1211-
// either it exists or it doesn't (null).
1212-
cachedBalance !== undefined
1213-
? (cachedBalance?.[0] as BankBalance | null | undefined)
1214-
: await BankBalance.findOne({
1215-
where: {
1216-
address,
1217-
},
1218-
})
1219-
1220-
if (bankBalance && !(bankBalance instanceof BankBalance)) {
1221-
throw new Error('Incorrect event type.')
1222-
}
1223-
1224-
// Cache bank balance, null if nonexistent.
1225-
if (cachedBalance === undefined) {
1226-
cache.events[bankBalanceDependentKey] = bankBalance ? [bankBalance] : null
1227-
}
1228-
1229-
// If bank balance found, return balance. Otherwise fall back to
1230-
// BankStateEvent.
1231-
if (bankBalance && bankBalance instanceof BankBalance) {
1232-
// Call hook.
1233-
await onFetch?.([bankBalance])
1234-
}
1235-
12361142
// Use BankDenomBalance if exists.
12371143
const bankDenomBalanceDependentKey = getDependentKey(
12381144
BankDenomBalance.dependentKeyNamespace,
@@ -1287,58 +1193,23 @@ export const getEnv = ({
12871193
: null
12881194
}
12891195

1290-
// Call hook.
1196+
// If bank denom balances found, return them. If none, fall back to
1197+
// BankStateEvent.
12911198
if (bankDenomBalances.length) {
1199+
// Call hook.
12921200
await onFetch?.(bankDenomBalances)
1293-
}
12941201

1295-
// If bank balance or bank denom balances found, combine and return. If
1296-
// neither exist, fall back to BankStateEvent if this address is a contract
1297-
// that we keep history for.
1298-
if (bankBalance || bankDenomBalances.length) {
1299-
const uniqueDenoms = Array.from(
1300-
new Set([
1301-
...Object.keys(bankBalance?.balances ?? {}),
1302-
...bankDenomBalances.map(({ denom }) => denom),
1303-
])
1202+
return bankDenomBalances.reduce(
1203+
(acc, denomBalance) => ({
1204+
...acc,
1205+
[denomBalance.denom]: denomBalance.balance,
1206+
}),
1207+
{} as Record<string, string>
13041208
)
1209+
}
13051210

1306-
// Merge and choose latest balance for each denom.
1307-
return uniqueDenoms.reduce((acc, denom) => {
1308-
const balanceFromAll =
1309-
bankBalance?.balances?.[denom] &&
1310-
bankBalance.denomUpdateBlockHeights?.[denom] &&
1311-
// Filter out denoms that are not valid for the current block height.
1312-
BigInt(bankBalance.denomUpdateBlockHeights[denom]) <= block.height
1313-
? {
1314-
balance: bankBalance.balances[denom],
1315-
blockHeight: bankBalance.denomUpdateBlockHeights[denom],
1316-
}
1317-
: undefined
1318-
1319-
const denomBalance = bankDenomBalances.find(
1320-
({ denom: d }) => d === denom
1321-
)
1322-
1323-
const balance =
1324-
balanceFromAll && denomBalance
1325-
? BigInt(denomBalance.blockHeight) >
1326-
BigInt(balanceFromAll.blockHeight)
1327-
? denomBalance.balance
1328-
: balanceFromAll.balance
1329-
: denomBalance?.balance || balanceFromAll?.balance
1330-
1331-
return balance
1332-
? {
1333-
...acc,
1334-
[denom]: balance,
1335-
}
1336-
: acc
1337-
}, {} as Record<string, string>)
1338-
}
1339-
1340-
// Use BankStateEvent if no BankBalance and this address is a contract that
1341-
// we keep history for.
1211+
// Use BankStateEvent if no BankDenomBalance and this address is a contract
1212+
// that we keep history for.
13421213
const historyExists = await contractMatchesCodeIdKeys(
13431214
address,
13441215
...BANK_HISTORY_CODE_IDS_KEYS

0 commit comments

Comments
 (0)