Skip to content

Commit 504d5d7

Browse files
committed
feat(subgraph): add totalAppealingDisputes for user entity
1 parent a29a3d8 commit 504d5d7

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

subgraph/schema.graphql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ type User @entity {
7171
totalResolvedDisputes: BigInt!
7272
totalDisputes: BigInt!
7373
totalCoherent: BigInt!
74+
totalAppealingDisputes: BigInt!
7475
votes: [Vote!]! @derivedFrom(field: "juror")
7576
contributions: [Contribution!]! @derivedFrom(field: "contributor")
7677
evidences: [Evidence!]! @derivedFrom(field: "sender")
@@ -153,6 +154,7 @@ type Dispute @entity {
153154
rounds: [Round!]! @derivedFrom(field: "dispute")
154155
currentRound: Round!
155156
currentRoundIndex: BigInt!
157+
jurors: [User!]! @derivedFrom(field: "disputes")
156158
shifts: [TokenAndETHShift!]! @derivedFrom(field: "dispute")
157159
disputeKitDispute: DisputeKitDispute @derivedFrom(field: "coreDispute")
158160
}

subgraph/src/KlerosCore.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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 } from "../generated/schema";
28+
import { Court, Dispute, FeeToken, User } from "../generated/schema";
2929
import { BigInt } from "@graphprotocol/graph-ts";
3030
import { updatePenalty } from "./entities/Penalty";
3131
import { ensureFeeToken } from "./entities/FeeToken";
@@ -94,6 +94,12 @@ export function handleNewPeriod(event: NewPeriod): void {
9494
court.numberVotingDisputes = court.numberVotingDisputes.minus(ONE);
9595
updateCasesVoting(BigInt.fromI32(-1), event.block.timestamp);
9696
} else if (dispute.period === "appeal") {
97+
let juror: User;
98+
for (let i = 0; i < dispute.jurors.entries.length; i++) {
99+
juror = ensureUser(dispute.jurors.entries[0].value.toString());
100+
juror.totalAppealingDisputes = juror.totalAppealingDisputes.minus(ONE);
101+
juror.save();
102+
}
97103
court.numberAppealingDisputes = court.numberAppealingDisputes.minus(ONE);
98104
updateCasesAppealing(BigInt.fromI32(-1), event.block.timestamp);
99105
}
@@ -103,6 +109,12 @@ export function handleNewPeriod(event: NewPeriod): void {
103109
court.numberVotingDisputes = court.numberVotingDisputes.plus(ONE);
104110
updateCasesVoting(ONE, event.block.timestamp);
105111
} else if (newPeriod === "appeal") {
112+
let juror: User;
113+
for (let i = 0; i < dispute.jurors.entries.length; i++) {
114+
juror = ensureUser(dispute.jurors.entries[0].value.toString());
115+
juror.totalAppealingDisputes = juror.totalAppealingDisputes.plus(ONE);
116+
juror.save();
117+
}
106118
court.numberAppealingDisputes = court.numberAppealingDisputes.plus(ONE);
107119
updateCasesAppealing(ONE, event.block.timestamp);
108120
} else if (newPeriod === "execution") {

subgraph/src/entities/User.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export function createUserFromAddress(id: string): User {
2020
user.disputes = [];
2121
user.resolvedDisputes = [];
2222
user.totalResolvedDisputes = ZERO;
23+
user.totalAppealingDisputes = ZERO;
2324
user.totalDisputes = ZERO;
2425
user.totalCoherent = ZERO;
2526
user.save();

0 commit comments

Comments
 (0)