feat: add handler for burns to the transfer handler [subgraph] (#162)
* feat: add handler for burns to the transfer handler * fix: update transfer.ts to include the changes.
This commit is contained in:
parent
3414a96c65
commit
5c43ebe0d0
|
|
@ -4,4 +4,4 @@ export * from './approval';
|
||||||
export * from './contract';
|
export * from './contract';
|
||||||
export * from './metadata-update';
|
export * from './metadata-update';
|
||||||
export * from './mint';
|
export * from './mint';
|
||||||
export * from './transfer';
|
export * from './transfer';
|
||||||
|
|
|
||||||
|
|
@ -16,47 +16,57 @@ import {
|
||||||
} from '../generated/schema';
|
} from '../generated/schema';
|
||||||
|
|
||||||
export function handleTransfer(event: TransferEvent): void {
|
export function handleTransfer(event: TransferEvent): void {
|
||||||
let entity = new Transfer(
|
let transfer = new Transfer(
|
||||||
event.transaction.hash.concatI32(event.logIndex.toI32())
|
event.transaction.hash.concatI32(event.logIndex.toI32())
|
||||||
);
|
);
|
||||||
entity.from = event.params.from;
|
|
||||||
entity.to = event.params.to;
|
const TokenId = event.params.tokenId;
|
||||||
entity.tokenId = event.params.tokenId;
|
|
||||||
|
transfer.from = event.params.from;
|
||||||
entity.blockNumber = event.block.number;
|
transfer.to = event.params.to;
|
||||||
entity.blockTimestamp = event.block.timestamp;
|
transfer.tokenId = TokenId;
|
||||||
entity.transactionHash = event.transaction.hash;
|
|
||||||
|
transfer.blockNumber = event.block.number;
|
||||||
entity.save();
|
transfer.blockTimestamp = event.block.timestamp;
|
||||||
|
transfer.transactionHash = event.transaction.hash;
|
||||||
|
|
||||||
|
transfer.save();
|
||||||
|
|
||||||
let token: Token | null;
|
let token: Token | null;
|
||||||
|
|
||||||
let owner_address = event.params.to;
|
let owner_address = event.params.to;
|
||||||
let owner = Owner.load(owner_address);
|
let owner = Owner.load(owner_address);
|
||||||
|
|
||||||
if (!owner) {
|
if (!owner) {
|
||||||
// Create a new owner entity
|
// Create a new owner entity
|
||||||
owner = new Owner(owner_address);
|
owner = new Owner(owner_address);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parseInt(event.params.from.toHexString()) !== 0) {
|
if (parseInt(event.params.from.toHexString()) !== 0) {
|
||||||
|
if (parseInt(event.params.to.toHexString()) === 0) {
|
||||||
|
// Burn
|
||||||
|
// Remove the entity from storage
|
||||||
|
// Its controllers and owner will be affected.
|
||||||
|
store.remove('Token', TokenId.toString());
|
||||||
|
} else {
|
||||||
// Transfer
|
// Transfer
|
||||||
|
|
||||||
// Load the Token by using its TokenId
|
// Load the Token by using its TokenId
|
||||||
token = Token.load(
|
token = Token.load(
|
||||||
Bytes.fromByteArray(Bytes.fromBigInt(event.params.tokenId))
|
Bytes.fromByteArray(Bytes.fromBigInt(TokenId))
|
||||||
);
|
);
|
||||||
|
|
||||||
if (token) {
|
if (token) {
|
||||||
// Entity exists
|
// Entity exists
|
||||||
token.owner = owner_address;
|
token.owner = owner_address;
|
||||||
|
|
||||||
// Save both entities
|
// Save both entities
|
||||||
owner.save();
|
owner.save();
|
||||||
token.save();
|
token.save();
|
||||||
} else {
|
} else {
|
||||||
// Entity does not exist
|
// Entity does not exist
|
||||||
log.error('Unknown token was transferred.', []);
|
log.error('Unknown token was transferred.', []);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue