From 35891da20ebde3d27dfe1b0e738cdf02ec36e926 Mon Sep 17 00:00:00 2001 From: rabi-siddique Date: Fri, 26 Apr 2024 21:21:35 +0500 Subject: [PATCH] feat: index liquidation state timings --- schema.graphql | 2 ++ src/mappings/constants.ts | 3 +++ src/mappings/events/vaults.ts | 9 +++++++++ 3 files changed, 14 insertions(+) diff --git a/schema.graphql b/schema.graphql index a9f0965b6..069c413b4 100644 --- a/schema.graphql +++ b/schema.graphql @@ -143,6 +143,8 @@ type Vault @entity { debt: BigInt state: String wallet: Wallet! + liquidatingAt: Date + liquidatedAt: Date } type VaultManagerMetrics @entity { diff --git a/src/mappings/constants.ts b/src/mappings/constants.ts index b1d9f6931..649b1b607 100644 --- a/src/mappings/constants.ts +++ b/src/mappings/constants.ts @@ -17,6 +17,9 @@ export const EVENT_TYPES = { STORAGE: "storage", SUBMIT_PROPOSAL: "submit_proposal", TRANSFER: "transfer", + LIQUIDATING: "liquidating", + LIQUIDATED: "liquidated" + }; export const VALUE_KEY = b64encode("value"); diff --git a/src/mappings/events/vaults.ts b/src/mappings/events/vaults.ts index 1c33689e8..879161c23 100644 --- a/src/mappings/events/vaults.ts +++ b/src/mappings/events/vaults.ts @@ -1,4 +1,5 @@ import { VaultManagerMetrics, VaultManagerMetricsDaily, VaultManagerGovernance, Wallet, Vault } from "../../types"; +import { EVENT_TYPES } from "../constants"; import { dateToDayKey, extractBrand } from "../utils"; export const vaultsEventKit = (block: any, data: any, module: string, path: string) => { @@ -55,6 +56,14 @@ export const vaultsEventKit = (block: any, data: any, module: string, path: stri vault.debt = payload?.debtSnapshot?.debt?.__value; vault.balance = payload?.locked?.__value; vault.state = payload?.vaultState; + + if (vault.state === EVENT_TYPES.LIQUIDATING && !vault.liquidatingAt) { + vault.liquidatingAt = block.block.header.time; + } + + if (vault.state === EVENT_TYPES.LIQUIDATED && !vault.liquidatedAt) { + vault.liquidatedAt = block.block.header.time; + } return [vault.save()]; }