From 955db925cc684cd957055b7f08e4057c3c6b3196 Mon Sep 17 00:00:00 2001 From: alcercu Date: Fri, 6 Jan 2023 12:04:29 +0100 Subject: [PATCH] fix(subgraph): arbitrable code was not implemented --- subgraph/schema.graphql | 4 ++-- subgraph/src/KlerosCore.ts | 3 +++ subgraph/src/entities/Arbitrable.ts | 20 ++++++++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 subgraph/src/entities/Arbitrable.ts diff --git a/subgraph/schema.graphql b/subgraph/schema.graphql index 6942961a4..b6d89b846 100644 --- a/subgraph/schema.graphql +++ b/subgraph/schema.graphql @@ -67,7 +67,7 @@ type User @entity { evidences: [Evidence!]! @derivedFrom(field: "sender") } -type Arbitrated @entity { +type Arbitrable @entity { id: ID! # address disputes: [Dispute!]! @derivedFrom(field: "arbitrated") totalDisputes: BigInt! @@ -114,7 +114,7 @@ type Court @entity { type Dispute @entity { id: ID! court: Court! - arbitrated: Arbitrated! + arbitrated: Arbitrable! period: Period! ruled: Boolean! lastPeriodChange: BigInt! diff --git a/subgraph/src/KlerosCore.ts b/subgraph/src/KlerosCore.ts index 85e57255b..55a3b7e69 100644 --- a/subgraph/src/KlerosCore.ts +++ b/subgraph/src/KlerosCore.ts @@ -37,6 +37,7 @@ import { } from "./entities/JurorTokensPerCourt"; import { createDrawFromEvent } from "./entities/Draw"; import { createTokenAndEthShiftFromEvent } from "./entities/TokenAndEthShift"; +import { updateArbitrableCases } from "./entities/Arbitrable"; function getPeriodName(index: i32): string { const periodArray = ["evidence", "commit", "vote", "appeal", "execution"]; @@ -88,6 +89,8 @@ export function handleDisputeCreation(event: DisputeCreation): void { createDisputeFromEvent(event); const roundInfo = contract.getRoundInfo(disputeID, ZERO); createRoundFromRoundInfo(disputeID, ZERO, court.feeForJuror, roundInfo); + const arbitrable = event.params._arbitrable.toHexString(); + updateArbitrableCases(arbitrable, ONE); updateCases(ONE, event.block.timestamp); } diff --git a/subgraph/src/entities/Arbitrable.ts b/subgraph/src/entities/Arbitrable.ts new file mode 100644 index 000000000..15ff1f231 --- /dev/null +++ b/subgraph/src/entities/Arbitrable.ts @@ -0,0 +1,20 @@ +import { BigInt } from "@graphprotocol/graph-ts"; +import { Arbitrable } from "../../generated/schema"; +import { ZERO } from "../utils"; + +export function ensureArbitrable(id: string): Arbitrable { + let arbitrable = Arbitrable.load(id); + + if (arbitrable) return arbitrable; + + arbitrable = new Arbitrable(id); + arbitrable.totalDisputes = ZERO; + + return arbitrable; +} + +export function updateArbitrableCases(id: string, delta: BigInt): void { + const arbitrable = ensureArbitrable(id); + arbitrable.totalDisputes = arbitrable.totalDisputes.plus(delta); + arbitrable.save(); +}