multiple market support

This commit is contained in:
Richa-iitr 2022-09-05 01:40:42 +05:30
parent 48b8b717b0
commit 7cfb43190c
3 changed files with 13 additions and 5 deletions

View File

@ -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!

View File

@ -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();

View File

@ -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;