Skip to content

Commit 8da2248

Browse files
alcercujaybuidl
authored andcommitted
feat(subgraph): handle new Ruling event
1 parent 450a2cb commit 8da2248

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

subgraph/src/KlerosCore.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
NewPeriod,
1111
StakeSet,
1212
TokenAndETHShift as TokenAndETHShiftEvent,
13+
Ruling,
1314
} from "../generated/KlerosCore/KlerosCore";
1415
import { ZERO, ONE } from "./utils";
1516
import { createCourtFromEvent, getFeeForJuror } from "./entities/Court";
@@ -24,6 +25,8 @@ import {
2425
updatePaidETH,
2526
updateStakedPNK,
2627
updateRedistributedPNK,
28+
updateCasesRuled,
29+
updateCasesVoting,
2730
getDelta,
2831
} from "./datapoint";
2932
import { ensureUser } from "./entities/User";
@@ -35,6 +38,7 @@ import { createDrawFromEvent } from "./entities/Draw";
3538
import { createTokenAndEthShiftFromEvent } from "./entities/TokenAndEthShift";
3639
import { updateArbitrableCases } from "./entities/Arbitrable";
3740
import { Court, Dispute } from "../generated/schema";
41+
import { BigInt } from "@graphprotocol/graph-ts";
3842

3943
function getPeriodName(index: i32): string {
4044
const periodArray = ["evidence", "commit", "vote", "appeal", "execution"];
@@ -95,11 +99,25 @@ export function handleNewPeriod(event: NewPeriod): void {
9599
const disputeID = event.params._disputeID.toString();
96100
const dispute = Dispute.load(disputeID);
97101
if (!dispute) return;
98-
dispute.period = getPeriodName(event.params._period);
102+
const newPeriod = getPeriodName(event.params._period);
103+
if (dispute.period === "vote") {
104+
updateCasesVoting(BigInt.fromI32(-1), event.block.timestamp);
105+
} else if (newPeriod === "vote") {
106+
updateCasesVoting(ONE, event.block.timestamp);
107+
}
108+
dispute.period = newPeriod;
99109
dispute.lastPeriodChange = event.block.timestamp;
100110
dispute.save();
101111
}
102112

113+
export function handleRuling(event: Ruling): void {
114+
const disputeID = event.params._disputeID.toString();
115+
const dispute = Dispute.load(disputeID);
116+
if (!dispute) return;
117+
dispute.ruled = true;
118+
updateCasesRuled(ONE, event.block.timestamp);
119+
}
120+
103121
export function handleAppealDecision(event: AppealDecision): void {
104122
const contract = KlerosCore.bind(event.address);
105123
const disputeID = event.params._disputeID;

subgraph/subgraph.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ dataSources:
4848
handler: handleStakeSet
4949
- event: TokenAndETHShift(indexed address,indexed uint256,int256,int256)
5050
handler: handleTokenAndETHShift
51+
- event: Ruling(indexed address,uint256,uint256)
52+
handler: handleRuling
5153
file: ./src/KlerosCore.ts
5254
- kind: ethereum
5355
name: PolicyRegistry

0 commit comments

Comments
 (0)