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..4362f60c4 100644 --- a/src/mappings/constants.ts +++ b/src/mappings/constants.ts @@ -19,6 +19,11 @@ export const EVENT_TYPES = { TRANSFER: "transfer", }; +export const VAULT_STATES = { + LIQUIDATING: "liquidating", + LIQUIDATED: "liquidated" +} + export const VALUE_KEY = b64encode("value"); export const STORE_KEY = b64encode("store"); export const VSTORAGE_VALUE = b64encode("vstorage"); diff --git a/src/mappings/events/vaults.ts b/src/mappings/events/vaults.ts index 1c33689e8..bc66d82d2 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 { VAULT_STATES } 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 === VAULT_STATES.LIQUIDATING && !vault.liquidatingAt) { + vault.liquidatingAt = block.block.header.time; + } + + if (vault.state === VAULT_STATES.LIQUIDATED && !vault.liquidatedAt) { + vault.liquidatedAt = block.block.header.time; + } return [vault.save()]; }