Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions subgraph/schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -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!
Expand Down Expand Up @@ -114,7 +114,7 @@ type Court @entity {
type Dispute @entity {
id: ID!
court: Court!
arbitrated: Arbitrated!
arbitrated: Arbitrable!
period: Period!
ruled: Boolean!
lastPeriodChange: BigInt!
Expand Down
3 changes: 3 additions & 0 deletions subgraph/src/KlerosCore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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"];
Expand Down Expand Up @@ -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);
}

Expand Down
20 changes: 20 additions & 0 deletions subgraph/src/entities/Arbitrable.ts
Original file line number Diff line number Diff line change
@@ -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();
}