Skip to content

Commit 455b40c

Browse files
committed
feat: registry-metadata
1 parent 0fc36fb commit 455b40c

File tree

4 files changed

+103
-0
lines changed

4 files changed

+103
-0
lines changed

schema.graphql

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,24 @@ type LRegistry @entity {
116116
numberOfChallengedClearing: BigInt!
117117
"Connected TCR. Can be the 0 address. In practice, will never be null."
118118
connectedTCR: Bytes
119+
metadata: LRegistryMetadata
119120
}
120121

122+
type LRegistryMetadata @entity {
123+
id: ID!
124+
title: String
125+
description: String
126+
itemName: String
127+
itemNamePlural: String
128+
isConnectedTCR: Boolean
129+
requireRemovalEvidence: Boolean
130+
isTCRofTcrs: Boolean
131+
parentTCRAddress: String
132+
relTcrDisabled: Boolean
133+
registry: LRegistry @derivedFrom(field: "metadata")
134+
}
135+
136+
121137
type MetaEvidence @entity {
122138
"The meta evidence ID."
123139
id: ID!
@@ -183,6 +199,12 @@ type _Schema_
183199
algorithm: rank
184200
include: [{ entity: "LItemMetadata", fields: [{ name: "keywords" }] }]
185201
)
202+
@fulltext(
203+
name: "registrySearch"
204+
language: en
205+
algorithm: rank
206+
include: [{ entity: "LRegistryMetadata", fields: [{ name: "title" }, { name: "description" }, { name: "itemName" }] }]
207+
)
186208

187209
type ItemProp @entity(immutable: true) {
188210
id: ID!

src/LightGeneralizedTCRMapping.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import {
2525
LIArbitrator as IArbitratorDataSourceTemplate,
2626
LGTCREvidence as EvidenceMetadataTemplate,
2727
LItemMetadata as LItemMetadataTemplate,
28+
LRegistryMetadata as LRegistryMetadataTemplate,
2829
} from '../generated/templates';
2930
import {
3031
Contribution,
@@ -794,6 +795,18 @@ export function handleMetaEvidence(event: MetaEvidenceEvent): void {
794795
}
795796

796797
metaEvidence.URI = event.params._evidence;
798+
799+
const ipfsHash = extractPath(event.params._evidence);
800+
registry.metadata = `${ipfsHash}-${event.address.toHexString()}-${
801+
registry.metaEvidenceCount
802+
}`;
803+
804+
const context = new DataSourceContext();
805+
context.setString('address', event.address.toHexString());
806+
context.setBigInt('count', registry.metaEvidenceCount);
807+
808+
LRegistryMetadataTemplate.createWithContext(ipfsHash, context);
809+
797810
metaEvidence.save();
798811

799812
if (
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import { Bytes, dataSource, json, log } from '@graphprotocol/graph-ts';
2+
import { LRegistryMetadata } from '../../generated/schema';
3+
import { JSONValueToBool, JSONValueToMaybeString } from '../utils';
4+
5+
export function handleLRegistryMetadata(content: Bytes): void {
6+
const ipfsHash = dataSource.stringParam();
7+
8+
const value = json.fromBytes(content).toObject();
9+
10+
const context = dataSource.context();
11+
const count = context.getBigInt('count');
12+
const address = context.getString('address');
13+
14+
const id = `${ipfsHash}-${address}-${count.toString()}`;
15+
16+
const metadata = new LRegistryMetadata(id);
17+
18+
log.debug(`ipfs hash : {}, content : {}`, [ipfsHash, content.toString()]);
19+
20+
if (!value) {
21+
log.warning(`Error converting object for hash {}`, [ipfsHash]);
22+
metadata.save();
23+
return;
24+
}
25+
26+
const metadataValue = value.get('metadata');
27+
if (!metadataValue) {
28+
log.error(`Error getting metadata values from ipfs hash {}`, [ipfsHash]);
29+
metadata.save();
30+
return;
31+
}
32+
33+
const data = metadataValue.toObject();
34+
35+
const title = data.get('tcrTitle');
36+
const description = data.get('tcrDescription');
37+
const itemName = data.get('itemName');
38+
const itemNamePlural = data.get('itemNamePlural');
39+
const isConnectedTCR = data.get('isConnectedTCR');
40+
const requireRemovalEvidence = data.get('requireRemovalEvidence');
41+
const isTCRofTcrs = data.get('isTCRofTcrs');
42+
const parentTCRAddress = data.get('parentTCRAddress');
43+
const relTcrDisabled = data.get('relTcrDisabled');
44+
45+
metadata.title = JSONValueToMaybeString(title);
46+
metadata.description = JSONValueToMaybeString(description);
47+
metadata.itemName = JSONValueToMaybeString(itemName);
48+
metadata.parentTCRAddress = JSONValueToMaybeString(parentTCRAddress);
49+
metadata.itemNamePlural = JSONValueToMaybeString(itemNamePlural);
50+
metadata.isConnectedTCR = JSONValueToBool(isConnectedTCR);
51+
metadata.requireRemovalEvidence = JSONValueToBool(requireRemovalEvidence);
52+
metadata.isTCRofTcrs = JSONValueToBool(isTCRofTcrs);
53+
metadata.relTcrDisabled = JSONValueToBool(relTcrDisabled);
54+
55+
metadata.save();
56+
}

subgraph.template.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,18 @@ templates:
220220
entities:
221221
- LItemMetadata
222222
- ItemProp
223+
abis:
224+
- name: LightGeneralizedTCR
225+
file: ./abis/LightGeneralizedTCR.json
226+
- name: LRegistryMetadata
227+
kind: file/ipfs
228+
mapping:
229+
apiVersion: 0.0.7
230+
language: wasm/assemblyscript
231+
file: ./src/fileHandlers/LRegistryMetadataHandler.ts
232+
handler: handleLRegistryMetadata
233+
entities:
234+
- LRegistryMetadata
223235
abis:
224236
- name: LightGeneralizedTCR
225237
file: ./abis/LightGeneralizedTCR.json

0 commit comments

Comments
 (0)