Skip to content

Commit 7ec5579

Browse files
feat: soft-delete player instead of removing them
1 parent b7b024c commit 7ec5579

File tree

3 files changed

+11
-5
lines changed

3 files changed

+11
-5
lines changed

src/index.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,9 @@ const main = async () => {
140140
return acc;
141141
}, {} as Record<string, PlayerStats>);
142142

143-
const playerWithDetails = players.map((p) => getPlayerInfo(p.id));
143+
const playerWithDetails = players
144+
.filter((p) => !p.removedAt)
145+
.map((p) => getPlayerInfo(p.id));
144146

145147
const sortedPlayersWithDetails = playerWithDetails
146148
.map((playerInfo) => {
@@ -319,7 +321,7 @@ const main = async () => {
319321
*/
320322
app.get("/players", (_req: Request, res: Response) => {
321323
const { players } = machine.state;
322-
return res.send(players);
324+
return res.send(players.filter((p) => !p.removedAt));
323325
});
324326

325327
/**

src/stackr/state.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export type Player = {
3131
id: number;
3232
name: string;
3333
teamId: number;
34+
removedAt?: number;
3435
};
3536

3637
export type Logs = {
@@ -68,7 +69,10 @@ export class League extends State<LeagueState> {
6869
);
6970

7071
const playersMerkleTree = createMT(players, (p) =>
71-
solidityPacked(["uint256", "string", "uint256"], [p.id, p.name, p.teamId])
72+
solidityPacked(
73+
["uint256", "string", "uint256", "uint256"],
74+
[p.id, p.name, p.teamId, p.removedAt || 0]
75+
)
7276
);
7377

7478
const matchesMMR = createMMR(matches, (m) => {

src/stackr/transitions.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ const addPlayer: STF<League, { teamId: number; playerName: string }> = {
468468
};
469469

470470
const removePlayer: STF<League, { teamId: number; playerId: number }> = {
471-
handler: ({ state, inputs }) => {
471+
handler: ({ state, inputs, block }) => {
472472
const { teamId, playerId } = inputs;
473473
const player = state.players.find((p) => p.id === playerId);
474474
if (!player) {
@@ -479,7 +479,7 @@ const removePlayer: STF<League, { teamId: number; playerId: number }> = {
479479
throw new Error("INVALID_TEAM");
480480
}
481481

482-
state.players = state.players.filter((p) => p.id !== playerId);
482+
player.removedAt = block.timestamp;
483483
return state;
484484
},
485485
};

0 commit comments

Comments
 (0)