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 './metadata-update';
|
||||
export * from './mint';
|
||||
export * from './transfer';
|
||||
export * from './transfer';
|
||||
|
|
|
|||
|
|
@ -16,47 +16,57 @@ import {
|
|||
} from '../generated/schema';
|
||||
|
||||
export function handleTransfer(event: TransferEvent): void {
|
||||
let entity = new Transfer(
|
||||
event.transaction.hash.concatI32(event.logIndex.toI32())
|
||||
let transfer = new Transfer(
|
||||
event.transaction.hash.concatI32(event.logIndex.toI32())
|
||||
);
|
||||
entity.from = event.params.from;
|
||||
entity.to = event.params.to;
|
||||
entity.tokenId = event.params.tokenId;
|
||||
|
||||
entity.blockNumber = event.block.number;
|
||||
entity.blockTimestamp = event.block.timestamp;
|
||||
entity.transactionHash = event.transaction.hash;
|
||||
|
||||
entity.save();
|
||||
|
||||
|
||||
const TokenId = event.params.tokenId;
|
||||
|
||||
transfer.from = event.params.from;
|
||||
transfer.to = event.params.to;
|
||||
transfer.tokenId = TokenId;
|
||||
|
||||
transfer.blockNumber = event.block.number;
|
||||
transfer.blockTimestamp = event.block.timestamp;
|
||||
transfer.transactionHash = event.transaction.hash;
|
||||
|
||||
transfer.save();
|
||||
|
||||
let token: Token | null;
|
||||
|
||||
|
||||
let owner_address = event.params.to;
|
||||
let owner = Owner.load(owner_address);
|
||||
|
||||
|
||||
if (!owner) {
|
||||
// Create a new owner entity
|
||||
owner = new Owner(owner_address);
|
||||
// Create a new owner entity
|
||||
owner = new Owner(owner_address);
|
||||
}
|
||||
|
||||
|
||||
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
|
||||
|
||||
// Load the Token by using its TokenId
|
||||
token = Token.load(
|
||||
Bytes.fromByteArray(Bytes.fromBigInt(event.params.tokenId))
|
||||
Bytes.fromByteArray(Bytes.fromBigInt(TokenId))
|
||||
);
|
||||
|
||||
|
||||
if (token) {
|
||||
// Entity exists
|
||||
token.owner = owner_address;
|
||||
|
||||
// Save both entities
|
||||
owner.save();
|
||||
token.save();
|
||||
// Entity exists
|
||||
token.owner = owner_address;
|
||||
|
||||
// Save both entities
|
||||
owner.save();
|
||||
token.save();
|
||||
} else {
|
||||
// Entity does not exist
|
||||
log.error('Unknown token was transferred.', []);
|
||||
// Entity does not exist
|
||||
log.error('Unknown token was transferred.', []);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue