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

53 lines
1.6 KiB
TypeScript

import { Address, log } from '@graphprotocol/graph-ts'
import { Nft, Token } from '../../@types/schema'
import { ERC20 } from '../../@types/templates/ERC20Template/ERC20'
import { ERC20Template, ERC721Template } from '../../@types/templates'
import { addNft } from './globalUtils'
export function createToken(address: Address, isDatatoken: boolean): Token {
log.debug('started creating token with address: {}', [address.toHexString()])
if (isDatatoken) {
ERC20Template.create(address)
}
const token = new Token(address.toHexString())
const contract = ERC20.bind(address)
token.name = contract.name()
token.symbol = contract.symbol()
token.address = address.toHexString()
token.isDatatoken = isDatatoken
token.decimals = contract.decimals()
token.save()
return token
}
export function getToken(address: Address, isDatatoken: boolean): Token {
let newToken = Token.load(address.toHexString())
if (newToken === null) {
newToken = createToken(address, isDatatoken)
}
return newToken
}
export function createNftToken(address: Address): Nft {
log.debug('started creating nft token with address: {}', [
address.toHexString()
])
ERC721Template.create(address)
const token = new Nft(address.toHexString())
// const contract = ERC721Template.bind(address)
token.name = ''
token.symbol = ''
token.address = address.toHexString()
token.save()
addNft()
return token
}
export function getNftToken(address: Address): Nft {
let newToken = Nft.load(address.toHexString())
if (newToken === null) {
newToken = createNftToken(address)
}
return newToken
}