Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into gh-actions
Browse files Browse the repository at this point in the history
  • Loading branch information
Douglasacost committed Jun 25, 2023
2 parents 9c702e9 + 7f725cc commit e91779b
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 21 deletions.
14 changes: 9 additions & 5 deletions schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ type Collection @entity {
freezer: String
metadataCid: String
isDestroyed: Boolean!
createdAt: Float @index
updatedAt: Float @index
items: [Item] @derivedFrom(field: "collection")
}

Expand All @@ -17,13 +19,15 @@ type Item @entity {
collection: Collection!
metadataCid: String
isBurned: Boolean!
createdAt: Float @index
updatedAt: Float @index
owner: String
}

type BalanceTransfer @entity {
id: ID!
from: String!
to: String!
from: String! @index
to: String! @index
txHash: String @index
amount: BigInt @index
timestamp: Float @index
Expand All @@ -32,13 +36,13 @@ type BalanceTransfer @entity {
}

type AllocationEventData @jsonField {
who: String
who: String @index
amount: String
}

type AllocationEvent @jsonField {
method: String
section: String
method: String @index
section: String @index
index: String
data: AllocationEventData
}
Expand Down
22 changes: 18 additions & 4 deletions src/helpers/verifyUnique.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,16 @@ type EnsureCollection = {
idx: number;
blockNumber: number;
collectionId: Codec;
timestamp: Date;
}

type EnsureItem = EnsureCollection & {
itemId: Codec;
collectionFkey: string;
}

export const ensureCollection = async ({
collectionId, blockNumber, idx
collectionId, blockNumber, idx, timestamp
}: EnsureCollection) => {
const collectionIdString = collectionId.toString();
const collections = await Collection.getByCollectionId(collectionIdString);
Expand All @@ -21,20 +23,32 @@ export const ensureCollection = async ({
const id = `${collectionIdString}-${blockNumber}-${idx}`;
logger.warn('Collection not found, creating new collection', collectionIdString);
collection = new Collection(id, collectionIdString, '', '', '', false);
collection.createdAt = new Date(
timestamp
).getTime();
}
collection.createdAt = new Date(
timestamp
).getTime();
return collection;
}

export const ensureItem = async ({
collectionId, itemId, blockNumber, idx
collectionId, itemId, blockNumber, idx, collectionFkey, timestamp
}: EnsureItem) => {
const itemIdString = itemId.toString();
let items = await Item.getByCollectionItemKey(`${collectionId}-${itemIdString}`);
const items = await Item.getByCollectionItemKey(`${collectionId}-${itemIdString}`);
let item = items.find((c) => !c.isBurned);
if (!item) {
const id = `${collectionId}-${itemIdString}-${blockNumber}-${idx}`;
logger.warn('Item not found, creating new item', itemIdString);
item = new Item(id, itemIdString, `${collectionId}-${itemIdString}`, '', false);
item = new Item(id, itemIdString, `${collectionId}-${itemIdString}`, collectionFkey, false);
item.createdAt = new Date(
timestamp
).getTime();
}
item.updatedAt = new Date(
timestamp
).getTime();
return item;
}
52 changes: 43 additions & 9 deletions src/mappings/mappingUniquesHandlers.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { Collection } from './../types/models/Collection';
import { Item } from './../types/models/Item';
import { Balance } from '@polkadot/types/interfaces/runtime';
import { ensureCollection, ensureItem } from './../helpers/verifyUnique';
Expand Down Expand Up @@ -46,12 +45,16 @@ export async function handleUniquesTransferEvent(
collectionId,
blockNumber,
idx: event.idx,
timestamp: event.extrinsic.block.timestamp,
});

const item = await ensureItem({
collectionId,
collectionFkey: collection.id,
itemId,
blockNumber,
idx: event.idx,
timestamp: event.extrinsic.block.timestamp,
});
item.owner = to.toString();
uniqueTransfer.itemId = item.id;
Expand All @@ -71,11 +74,23 @@ export const handleUniquesMetadataSetEvent = async (
const data = event.event.data[2];
const blockNumber = event.block.block.header.number.toNumber();

//small check
let items = await Item.getByCollectionItemKey(`${collectionId.toString()}-${itemId.toString()}`);

if (items.length <= 0) {
logger.error(
"Item not found while handling uniqueMetadataSetEvent",
JSON.stringify(event.toHuman())
);
return;
}
const item = await ensureItem({
collectionId,
collectionFkey: items[0].collectionId,
itemId,
blockNumber,
idx: event.idx,
timestamp: event.extrinsic.block.timestamp,
});
item.metadataCid = data.toHuman().toString();
return item.save();
Expand All @@ -94,7 +109,8 @@ export const handleUniquesCollectionMetadataSetEvent = async (
const collection = await ensureCollection({
collectionId,
blockNumber,
idx: event.idx
idx: event.idx,
timestamp: event.extrinsic.block.timestamp
});
collection.metadataCid = data.toHuman().toString();

Expand All @@ -113,7 +129,8 @@ export const handleUniquesDestroyedEvent = async (
const collection = await ensureCollection({
collectionId,
blockNumber,
idx: event.idx
idx: event.idx,
timestamp: event.extrinsic.block.timestamp
});
collection.isDestroyed = true;
return collection.save()
Expand All @@ -129,12 +146,22 @@ export const handleUniquesBurnedEvent = async (
const collectionId = event.event.data[0];
const blockNumber = event.block.block.header.number.toNumber();

const collection = await ensureCollection({
collectionId,
blockNumber,
idx: event.idx,
timestamp: event.extrinsic.block.timestamp,
});

const item = await ensureItem({
collectionId,
collectionFkey: collection.id,
itemId,
blockNumber,
idx: event.idx
idx: event.idx,
timestamp: event.extrinsic.block.timestamp
});

item.isBurned = true;
return item.save();
}
Expand All @@ -153,17 +180,21 @@ export const handleUniquesIssuedEvent = async (
const collection = await ensureCollection({
collectionId,
blockNumber,
idx: event.idx
idx: event.idx,
timestamp: event.extrinsic.block.timestamp
});
const item = await ensureItem({
collectionId,
collectionFkey: collection.id,
itemId,
blockNumber,
idx: event.idx
idx: event.idx,
timestamp: event.extrinsic.block.timestamp
});

item.owner = owner.toString();
item.collectionId = collection.id;

await collection.save()
return item.save();
}
Expand All @@ -182,7 +213,8 @@ export const handleUniquesCreatedEvent = async (
const collection = await ensureCollection({
collectionId,
blockNumber,
idx: event.idx
idx: event.idx,
timestamp: event.extrinsic.block.timestamp
});

collection.issuer = creator.toString();
Expand All @@ -209,7 +241,8 @@ export const handleUniquesOwnershipAcceptanceChangedEvent = async (
const collection = await ensureCollection({
collectionId,
blockNumber,
idx: event.idx
idx: event.idx,
timestamp: event.extrinsic.block.timestamp
});

collection.owner = who.toString();
Expand All @@ -232,7 +265,8 @@ export const handleUniquesTeamChangedEvent = async (
const collection = await ensureCollection({
collectionId,
blockNumber,
idx: event.idx
idx: event.idx,
timestamp: event.extrinsic.block.timestamp
});

collection.issuer = issuer.toString();
Expand Down
6 changes: 3 additions & 3 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -7023,9 +7023,9 @@ webpack-sources@^3.2.3:
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==

webpack@^5.68.0:
version "5.75.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.75.0.tgz#1e440468647b2505860e94c9ff3e44d5b582c152"
integrity sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==
version "5.76.1"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.76.1.tgz#7773de017e988bccb0f13c7d75ec245f377d295c"
integrity sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ==
dependencies:
"@types/eslint-scope" "^3.7.3"
"@types/estree" "^0.0.51"
Expand Down

0 comments on commit e91779b

Please sign in to comment.