diff --git a/schema.graphql b/schema.graphql index 7fae187..0ced6a3 100644 --- a/schema.graphql +++ b/schema.graphql @@ -127,6 +127,6 @@ type UpdateAgentHash @entity(immutable: true) { type MechAgent @entity { id: ID! # uint256 - mech: Bytes! # address + mech: Bytes # address agentHash: Bytes # bytes32 } \ No newline at end of file diff --git a/src/agent-factory.ts b/src/agent-factory.ts index d9174ac..08bdcb2 100644 --- a/src/agent-factory.ts +++ b/src/agent-factory.ts @@ -22,9 +22,19 @@ export function handleCreateMech(event: CreateMechEvent): void { entity.save() - let mechAgent = new MechAgent(event.params.agentId.toHexString()); - mechAgent.mech = event.params.mech; - mechAgent.save() + let mechAgent = MechAgent.load(event.params.agentId.toHexString()); + + // Mech is created after agent, which already handles mechAgent creation + // add this check just in case + if (mechAgent !== null) { + mechAgent.mech = event.params.mech; + mechAgent.save() + } else { + mechAgent = new MechAgent(event.params.agentId.toHexString()); + mechAgent.mech = event.params.mech; + mechAgent.save() + } + AgentMech.create(event.params.mech); } diff --git a/src/agent-registry.ts b/src/agent-registry.ts index 5b532be..52b7bab 100644 --- a/src/agent-registry.ts +++ b/src/agent-registry.ts @@ -76,6 +76,17 @@ export function handleCreateAgent(event: CreateAgentEvent): void { entity.transactionHash = event.transaction.hash entity.save() + + let mechAgent = MechAgent.load(event.params.agentId.toHexString()); + + if (mechAgent !== null) { + mechAgent.agentHash = event.params.agentHash; + mechAgent.save() + } else { + mechAgent = new MechAgent(event.params.agentId.toHexString()); + mechAgent.agentHash = event.params.agentHash; + mechAgent.save() + } } export function handleManagerUpdated(event: ManagerUpdatedEvent): void {