Skip to content

Commit 4470325

Browse files
committed
move arm daily stats creation after log processing
1 parent dc18227 commit 4470325

File tree

1 file changed

+45
-44
lines changed

1 file changed

+45
-44
lines changed

src/templates/origin-arm/origin-arm.ts

Lines changed: 45 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -178,50 +178,6 @@ export const createOriginARMProcessors = ({
178178
state.totalAssets - state.totalDeposits + state.totalWithdrawals
179179

180180
for (const block of ctx.blocks) {
181-
if (tracker(ctx, block)) {
182-
// ArmState
183-
const state = await getCurrentState(block)
184-
const rateUSD = await ensureExchangeRate(ctx, block, 'ETH', 'USD')
185-
186-
// ArmDailyStat
187-
const date = new Date(block.header.timestamp)
188-
const dateStr = date.toISOString().slice(0, 10)
189-
const previousDateStr = dayjs(date).subtract(1, 'day').toISOString().slice(0, 10)
190-
const currentDayId = `${ctx.chain.id}:${dateStr}:${armAddress}`
191-
const previousDayId = `${ctx.chain.id}:${previousDateStr}:${armAddress}`
192-
const previousDailyStat =
193-
dailyStatsMap.get(previousDayId) ?? (await ctx.store.get(ArmDailyStat, previousDayId))
194-
const startOfDay = dayjs(date).startOf('day').toDate()
195-
const endOfDay = dayjs(date).endOf('day').toDate()
196-
const armDayApy = calculateAPY(
197-
startOfDay,
198-
endOfDay,
199-
previousDailyStat?.assetsPerShare ?? 10n ** 18n,
200-
state.assetsPerShare,
201-
)
202-
203-
const armDailyStatEntity = new ArmDailyStat({
204-
id: currentDayId,
205-
chainId: ctx.chain.id,
206-
timestamp: new Date(block.header.timestamp),
207-
blockNumber: block.header.height,
208-
date: dateStr,
209-
address: armAddress,
210-
assets0: state.assets0,
211-
assets1: state.assets1,
212-
outstandingAssets1: state.outstandingAssets1,
213-
totalAssets: state.totalAssets,
214-
totalAssetsCap: state.totalAssetsCap,
215-
totalSupply: state.totalSupply,
216-
assetsPerShare: state.assetsPerShare,
217-
apr: armDayApy.apr,
218-
apy: armDayApy.apy,
219-
fees: state.totalFees - (previousDailyStat?.fees ?? 0n),
220-
yield: state.totalYield - (previousDailyStat?.yield ?? 0n),
221-
rateUSD: +formatUnits(rateUSD?.rate ?? 0n, 8),
222-
})
223-
dailyStatsMap.set(currentDayId, armDailyStatEntity)
224-
}
225181
for (const log of block.logs) {
226182
// ArmWithdrawalRequest
227183
if (redeemRequestedFilter.matches(log)) {
@@ -269,7 +225,52 @@ export const createOriginARMProcessors = ({
269225
state.totalFees += event.fee
270226
}
271227
}
228+
if (tracker(ctx, block)) {
229+
// ArmState
230+
const state = await getCurrentState(block)
231+
const rateUSD = await ensureExchangeRate(ctx, block, 'ETH', 'USD')
232+
233+
// ArmDailyStat
234+
const date = new Date(block.header.timestamp)
235+
const dateStr = date.toISOString().slice(0, 10)
236+
const previousDateStr = dayjs(date).subtract(1, 'day').toISOString().slice(0, 10)
237+
const currentDayId = `${ctx.chain.id}:${dateStr}:${armAddress}`
238+
const previousDayId = `${ctx.chain.id}:${previousDateStr}:${armAddress}`
239+
const previousDailyStat =
240+
dailyStatsMap.get(previousDayId) ?? (await ctx.store.get(ArmDailyStat, previousDayId))
241+
const startOfDay = dayjs(date).startOf('day').toDate()
242+
const endOfDay = dayjs(date).endOf('day').toDate()
243+
const armDayApy = calculateAPY(
244+
startOfDay,
245+
endOfDay,
246+
previousDailyStat?.assetsPerShare ?? 10n ** 18n,
247+
state.assetsPerShare,
248+
)
249+
250+
const armDailyStatEntity = new ArmDailyStat({
251+
id: currentDayId,
252+
chainId: ctx.chain.id,
253+
timestamp: new Date(block.header.timestamp),
254+
blockNumber: block.header.height,
255+
date: dateStr,
256+
address: armAddress,
257+
assets0: state.assets0,
258+
assets1: state.assets1,
259+
outstandingAssets1: state.outstandingAssets1,
260+
totalAssets: state.totalAssets,
261+
totalAssetsCap: state.totalAssetsCap,
262+
totalSupply: state.totalSupply,
263+
assetsPerShare: state.assetsPerShare,
264+
apr: armDayApy.apr,
265+
apy: armDayApy.apy,
266+
fees: state.totalFees - (previousDailyStat?.fees ?? 0n),
267+
yield: state.totalYield - (previousDailyStat?.yield ?? 0n),
268+
rateUSD: +formatUnits(rateUSD?.rate ?? 0n, 8),
269+
})
270+
dailyStatsMap.set(currentDayId, armDailyStatEntity)
271+
}
272272
}
273+
273274
await ctx.store.insert(states)
274275
await ctx.store.upsert([...dailyStatsMap.values()])
275276
await ctx.store.upsert([...redemptionMap.values()])

0 commit comments

Comments
 (0)