instadapp-dsa-subgraph/src/mappings/instaIndex.ts
2020-05-21 11:04:36 -03:00

97 lines
3.0 KiB
TypeScript

import { SmartAccount, User } from "../../generated/schema";
import {
LogAccountCreated,
LogNewAccount,
LogNewCheck,
LogNewMaster,
LogUpdateMaster,
SetBasicsCall,
InstaIndex
} from "../../generated/InstaIndex/InstaIndex";
import {
getOrCreateAccountModule,
getOrCreateUser,
getOrCreateSmartAccount,
getOrCreateInstaIndex
} from '../utils/helpers'
// - event: LogAccountCreated(address,indexed address,indexed address,indexed address)
// handler: handleLogAccountCreated
// Creation of new smart account for user
// event LogAccountCreated(address sender, address indexed owner, address indexed account, address indexed origin);
export function handleLogAccountCreated(event: LogAccountCreated): void {
let smartAccount = getOrCreateSmartAccount(event.params.account.toHexString());
let owner = getOrCreateUser(event.params.owner.toHexString())
let sender = getOrCreateUser(event.params.sender.toHexString())
smartAccount.owner = owner.id;
smartAccount.creator = sender.id;
smartAccount.origin = event.params.origin.toHexString();
smartAccount.save();
}
// - event: LogNewAccount(indexed address,indexed address,indexed address)
// handler: handleLogNewAccount
// Creation of new "Account Module"
// emit LogNewAccount(_newAccount, _connectors, _check);
export function handleLogNewAccount(event: LogNewAccount): void {
// current account version has to be retrieved from the contract
let accountVersion = InstaIndex.bind(event.address).versionCount();
let accountModule = getOrCreateAccountModule(accountVersion.toString())
accountModule.address = event.params._newAccount.toHexString();
accountModule.connectors = event.params._connectors.toHexString();
accountModule.check = event.params._check.toHexString();
accountModule.save();
}
// - event: LogNewCheck(indexed uint256,indexed address)
// handler: handleLogNewCheck
export function handleLogNewCheck(event: LogNewCheck): void {
let accountModule = getOrCreateAccountModule(event.params.accountVersion.toString());
accountModule.check = event.params.check.toHexString();
accountModule.save();
}
// - event: LogNewMaster(indexed address)
// handler: handleLogNewMaster
export function handleLogNewMaster(event: LogNewMaster): void {
let index = getOrCreateInstaIndex();
index.master = event.params.master.toHexString();
index.save();
}
// - event: LogUpdateMaster(indexed address)
// handler: handleLogUpdateMaster
export function handleLogUpdateMaster(event: LogUpdateMaster): void {
let index = getOrCreateInstaIndex();
index.master = event.params.master.toHexString();
index.save();
}
// - event: LogUpdateMaster(indexed address)
// handler: handleLogUpdateMaster
export function handleSetBasics(call: SetBasicsCall): void {
let accountVersion = InstaIndex.bind(call.to).versionCount();
let accountModule = getOrCreateAccountModule(accountVersion.toString())
accountModule.address = call.inputs._account.toHexString();
accountModule.connectors = call.inputs._connectors.toHexString();
accountModule.save();
}