ocean-subgraph/src/mappings/utils/dispenserUtils.ts

41 lines
1.2 KiB
TypeScript
Raw Normal View History

2021-11-10 13:47:44 +01:00
import { Dispenser } from '../../@types/schema'
import { getToken } from './tokenUtils'
import { Address, BigDecimal } from '@graphprotocol/graph-ts'
import { weiToDecimal } from './generic'
import { Dispenser as DispenserContract } from '../../@types/Dispenser/Dispenser'
2021-11-10 13:47:44 +01:00
export function getDispenserGraphID(
contractAddress: Address,
datatokenAddress: Address
): string {
return contractAddress.toHexString() + '-' + datatokenAddress.toHexString()
}
export function createDispenser(dispenserID: string): Dispenser {
const dispenser = new Dispenser(dispenserID)
2021-11-10 13:47:44 +01:00
dispenser.save()
return dispenser
}
export function getDispenser(dispenserID: string): Dispenser {
let dispenser = Dispenser.load(dispenserID)
2021-11-10 13:47:44 +01:00
if (dispenser === null) {
dispenser = createDispenser(dispenserID)
2021-11-10 13:47:44 +01:00
}
return dispenser
}
export function updateDispenserBalance(
contractAddress: Address,
datatokenAddress: Address
): BigDecimal {
const contract = DispenserContract.bind(contractAddress)
const dispenserDetails = contract.try_status(datatokenAddress)
if (dispenserDetails == null) return BigDecimal.fromString('0')
const token = getToken(datatokenAddress, true)
return weiToDecimal(
dispenserDetails.value.value5.toBigDecimal(),
token.decimals
)
}