From 7cfb43190c5fcb9f62edd7ef8a9b10eb1dc3c984 Mon Sep 17 00:00:00 2001 From: Richa-iitr Date: Mon, 5 Sep 2022 01:40:42 +0530 Subject: [PATCH] multiple market support --- schema.graphql | 10 +++++++--- src/compound-v3-managers.ts | 6 ++++-- src/utils.ts | 2 ++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/schema.graphql b/schema.graphql index b3aea7f..c36b50e 100644 --- a/schema.graphql +++ b/schema.graphql @@ -1,14 +1,16 @@ type Owner @entity { - # address of the owner. + # address of the owner + "#" + market Address. id: ID! # address of the owner. address: Bytes! + # compound market address + market: Bytes! # lists of all enabled and disabled managers. manager: [Manager!]! @derivedFrom(field: "owner") } type Manager @entity { - # manager address + "#" + owner address. + # manager address + "#" + owner address + "#" + market address. id: ID! # address of the manager. address: Bytes! @@ -18,12 +20,14 @@ type Manager @entity { isAllowed: Boolean! # whether the manager is DSA or not. isDSA: Boolean! + # compound market address + market: Bytes! # transction details of the transaction when manager enabled or disabled. transactionData: TransactionData! } type TransactionData @entity { - # transaction hash + # transaction hash + "#" + log index id: ID! # transaction index txnIndex: BigInt! diff --git a/src/compound-v3-managers.ts b/src/compound-v3-managers.ts index f6270a3..cbc82e9 100644 --- a/src/compound-v3-managers.ts +++ b/src/compound-v3-managers.ts @@ -5,8 +5,8 @@ import { import { createOrLoadManager, createOrLoadOwner, createOrLoadTransaction, isDSA, ZERO } from "./utils"; export function handleManagerToggled(event: Approval): void { - let ownerID = event.params.owner.toHexString(); - let managerID = event.params.spender.toHexString() + "#" + event.params.owner.toHexString(); + let ownerID = event.params.owner.toHexString() + "#" + event.address.toHexString(); + let managerID = event.params.spender.toHexString() + "#" + event.params.owner.toHexString() + "#" + event.address.toHexString(); let transactionID = event.transaction.hash.toHexString() + "#" + event.logIndex.toString(); let transactionData = createOrLoadTransaction(transactionID); @@ -26,11 +26,13 @@ export function handleManagerToggled(event: Approval): void { manager.address = event.params.spender; manager.isAllowed = event.params.amount == ZERO ? false : true; manager.owner = ownerID; + manager.market = event.address; manager.isDSA = isDSA(event.params.spender); manager.transactionData = transactionID; let owner = createOrLoadOwner(ownerID); owner.address = event.params.owner; + owner.market = event.address; transactionData.save(); manager.save(); diff --git a/src/utils.ts b/src/utils.ts index 353c4db..761b771 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -26,6 +26,7 @@ export function createOrLoadOwner(id: string): Owner { if (account == null) { account = new Owner(id); account.address = new Address(0); + account.market = new Address(0); } return account; } @@ -36,6 +37,7 @@ export function createOrLoadManager(id: string): Manager { if (account == null) { account = new Manager(id); account.address = new Address(0); + account.market = new Address(0); account.owner = ""; account.isAllowed = false; account.isDSA = false;