diff --git a/packages/augur-subgraph/src/mappings/ammFactory.ts b/packages/augur-subgraph/src/mappings/ammFactory.ts index 8bdad778c73..484f958f88b 100644 --- a/packages/augur-subgraph/src/mappings/ammFactory.ts +++ b/packages/augur-subgraph/src/mappings/ammFactory.ts @@ -3,6 +3,7 @@ import { AMMCreated } from '../../generated/AMMFactory/AMMFactory'; import { AMMExchange, ParaShareToken, BPool } from '../../generated/schema'; import { AMMExchange as AMMExchangeTemplate, BPool as BPoolTemplate } from '../../generated/templates'; import { updateAMM } from '../utils/helpers/amm'; +import {updateOrCreateBPool} from './bPool'; export function handleAMMCreated(event: AMMCreated): void { let id = event.params.amm.toHexString(); @@ -15,9 +16,7 @@ export function handleAMMCreated(event: AMMCreated): void { return; } - let bPool = new BPool(event.params.bPool.toHexString()); - bPool.save(); - + updateOrCreateBPool(event.params.bPool.toHexString()); BPoolTemplate.create(event.params.bPool); let ZERO = BigDecimal.fromString('0'); diff --git a/packages/augur-subgraph/src/mappings/bPool.ts b/packages/augur-subgraph/src/mappings/bPool.ts index ce7b7c1cb36..1a3797afbdb 100644 --- a/packages/augur-subgraph/src/mappings/bPool.ts +++ b/packages/augur-subgraph/src/mappings/bPool.ts @@ -3,22 +3,26 @@ import { BPool, LOG_CALL, LOG_EXIT, LOG_JOIN, LOG_SWAP } from '../../generated/t import { BPool as BPoolEntity } from '../../generated/schema'; export function handleBPoolActionCall(event: LOG_CALL): void { - updateBPool(event.address.toHexString()); + updateOrCreateBPool(event.address.toHexString()); } export function handleBPoolActionExit(event: LOG_EXIT): void { - updateBPool(event.address.toHexString()); + updateOrCreateBPool(event.address.toHexString()); } export function handleBPoolActionJoin(event: LOG_JOIN): void { - updateBPool(event.address.toHexString()); + updateOrCreateBPool(event.address.toHexString()); } export function handleBPoolActionSwap(event: LOG_SWAP): void { - updateBPool(event.address.toHexString()); + updateOrCreateBPool(event.address.toHexString()); } -export function updateBPool(id: string): void { +export function updateOrCreateBPool(id: string): void { let bPool = BPool.bind(Address.fromString(id)); let bPoolEntity = BPoolEntity.load(id); + if(bPoolEntity == null) { + bPoolEntity = new BPoolEntity(id); + } + let tokens = bPool.getCurrentTokens(); bPoolEntity.cashBalance = bPool.getBalance(tokens[0]); bPoolEntity.cashWeight = bPool.getNormalizedWeight(tokens[0]);