Skip to content

Commit 4974dca

Browse files
committed
chore: recompute-coherence-on-offset
1 parent 31d9065 commit 4974dca

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
import { log } from "@graphprotocol/graph-ts";
22
import { Offset } from "../generated/LeaderboardOffset/LeaderboardOffset";
33
import { User } from "../generated/schema";
4+
import { computeCoherenceScore } from "./entities/User";
45

56
export function handleLeaderboardOffset(event: Offset): void {
67
const user = User.load(event.params.user.toHexString());
78
if (!user) {
89
log.error(`User {} not found.`, [event.params.user.toHexString()]);
910
return;
1011
}
12+
//keep track of offset separately
1113
user.leaderboardOffset = user.leaderboardOffset.plus(event.params.offset);
14+
15+
//apply the offset and re compute coherenceScore
16+
user.totalCoherentVotes = user.totalCoherentVotes.plus(event.params.offset);
17+
// Recalculate coherenceScore
18+
user.coherenceScore = computeCoherenceScore(user.totalCoherentVotes, user.totalResolvedVotes);
19+
1220
user.save();
1321
}

subgraph/core/tests/leaderboard-offset.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,16 @@ describe("Handle leaderboard offset", () => {
2323
handleLeaderboardOffset(event);
2424
assert.fieldEquals("User", user.id, "leaderboardOffset", "-100");
2525
});
26+
27+
test("Should recompute coherence score properly", () => {
28+
const user = createUser(address);
29+
user.totalCoherentVotes = BigInt.fromI32(50);
30+
user.totalResolvedVotes = BigInt.fromI32(80);
31+
user.save();
32+
const event = createOffsetEvent(address, BigInt.fromI32(20));
33+
handleLeaderboardOffset(event);
34+
assert.fieldEquals("User", user.id, "leaderboardOffset", "20");
35+
assert.fieldEquals("User", user.id, "totalCoherentVotes", "70");
36+
assert.fieldEquals("User", user.id, "coherenceScore", "78");
37+
});
2638
});

0 commit comments

Comments
 (0)