Skip to content

Commit 56cb87a

Browse files
committed
feat(subgraph): add periodDeadline field to dispute entity
1 parent d9ef8f5 commit 56cb87a

File tree

3 files changed

+14
-4
lines changed

3 files changed

+14
-4
lines changed

subgraph/schema.graphql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ type Dispute @entity {
151151
overridden: Boolean!
152152
lastPeriodChange: BigInt!
153153
lastPeriodChangeBlockNumber: BigInt!
154+
periodDeadline: BigInt!
154155
rounds: [Round!]! @derivedFrom(field: "dispute")
155156
currentRound: Round!
156157
currentRoundIndex: BigInt!

subgraph/src/KlerosCore.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
AcceptedFeeToken,
1616
} from "../generated/KlerosCore/KlerosCore";
1717
import { ZERO, ONE } from "./utils";
18-
import { createCourtFromEvent, getFeeForJuror } from "./entities/Court";
18+
import { createCourtFromEvent } from "./entities/Court";
1919
import { createDisputeKitFromEvent, filterSupportedDisputeKits } from "./entities/DisputeKit";
2020
import { createDisputeFromEvent } from "./entities/Dispute";
2121
import { createRoundFromRoundInfo } from "./entities/Round";
@@ -25,7 +25,7 @@ import { updateJurorDelayedStake, updateJurorStake } from "./entities/JurorToken
2525
import { createDrawFromEvent } from "./entities/Draw";
2626
import { updateTokenAndEthShiftFromEvent } from "./entities/TokenAndEthShift";
2727
import { updateArbitrableCases } from "./entities/Arbitrable";
28-
import { Court, Dispute, FeeToken, User } from "../generated/schema";
28+
import { Court, Dispute, User } from "../generated/schema";
2929
import { BigInt } from "@graphprotocol/graph-ts";
3030
import { updatePenalty } from "./entities/Penalty";
3131
import { ensureFeeToken } from "./entities/FeeToken";
@@ -128,6 +128,11 @@ export function handleNewPeriod(event: NewPeriod): void {
128128
dispute.period = newPeriod;
129129
dispute.lastPeriodChange = event.block.timestamp;
130130
dispute.lastPeriodChangeBlockNumber = event.block.number;
131+
if (newPeriod !== "execution") {
132+
dispute.periodDeadline = event.block.timestamp.plus(court.timesPerPeriod[event.params._period]);
133+
} else {
134+
dispute.periodDeadline = BigInt.fromU64(U64.MAX_VALUE);
135+
}
131136
dispute.save();
132137
court.save();
133138
}

subgraph/src/entities/Dispute.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import { KlerosCore, DisputeCreation } from "../../generated/KlerosCore/KlerosCore";
2-
import { Dispute } from "../../generated/schema";
2+
import { Court, Dispute } from "../../generated/schema";
33
import { ZERO } from "../utils";
44

55
export function createDisputeFromEvent(event: DisputeCreation): void {
66
const contract = KlerosCore.bind(event.address);
77
const disputeID = event.params._disputeID;
88
const disputeContractState = contract.disputes(disputeID);
99
const dispute = new Dispute(disputeID.toString());
10-
dispute.court = disputeContractState.value0.toString();
10+
const courtID = disputeContractState.value0.toString();
11+
dispute.court = courtID;
1112
dispute.arbitrated = event.params._arbitrable.toHexString();
1213
dispute.period = "evidence";
1314
dispute.ruled = false;
@@ -16,6 +17,9 @@ export function createDisputeFromEvent(event: DisputeCreation): void {
1617
dispute.overridden = false;
1718
dispute.lastPeriodChange = event.block.timestamp;
1819
dispute.lastPeriodChangeBlockNumber = event.block.number;
20+
const court = Court.load(courtID);
21+
if (!court) return;
22+
dispute.periodDeadline = event.block.timestamp.plus(court.timesPerPeriod[0]);
1923
dispute.currentRoundIndex = ZERO;
2024
const roundID = `${disputeID.toString()}-${ZERO.toString()}`;
2125
dispute.currentRound = roundID;

0 commit comments

Comments
 (0)