sendou.ink/scripts/nuke-reported-weapons.ts
Kalle 2b5b1b1948
Some checks are pending
E2E Tests / e2e (push) Waiting to run
Tests and checks on push / run-checks-and-tests (push) Waiting to run
Updates translation progress / update-translation-progress-issue (push) Waiting to run
New match page (#3032)
2026-05-04 18:15:10 +03:00

78 lines
1.9 KiB
TypeScript

import "dotenv/config";
import { db } from "~/db/sql";
import * as Seasons from "~/features/mmr/core/Seasons";
import { dateToDatabaseTimestamp } from "~/utils/dates";
import invariant from "~/utils/invariant";
import { logger } from "~/utils/logger";
const discordId = process.argv[2]?.trim();
invariant(discordId, "discord id is required (argument 1)");
async function main() {
const currentSeason = Seasons.current();
if (!currentSeason) {
logger.info("No current season found");
return;
}
const user = await db
.selectFrom("User")
.select(["User.id"])
.where("User.discordId", "=", discordId)
.executeTakeFirstOrThrow();
const playedMaps = await db
.selectFrom("GroupMember")
.innerJoin("Group", "Group.id", "GroupMember.groupId")
.innerJoin("GroupMatch", (join) =>
join.on((eb) =>
eb.or([
eb("GroupMatch.alphaGroupId", "=", eb.ref("Group.id")),
eb("GroupMatch.bravoGroupId", "=", eb.ref("Group.id")),
]),
),
)
.innerJoin("GroupMatchMap", "GroupMatchMap.matchId", "GroupMatch.id")
.select(["GroupMatchMap.matchId", "GroupMatchMap.index"])
.where(
"GroupMatch.createdAt",
">",
dateToDatabaseTimestamp(currentSeason.starts),
)
.where(
"GroupMatch.createdAt",
"<",
dateToDatabaseTimestamp(currentSeason.ends),
)
.where("GroupMember.userId", "=", user.id)
.where("GroupMatchMap.winnerGroupId", "is not", null)
.execute();
if (playedMaps.length === 0) {
logger.info(`No reported weapons to delete for user ${discordId}`);
return;
}
await db
.deleteFrom("ReportedWeapon")
.where("userId", "=", user.id)
.where((eb) =>
eb.or(
playedMaps.map((m) =>
eb.and([
eb("ReportedWeapon.groupMatchId", "=", m.matchId),
eb("ReportedWeapon.mapIndex", "=", m.index),
]),
),
),
)
.execute();
logger.info(
`Deleted reported weapons across ${playedMaps.length} maps for user ${discordId}`,
);
}
void main();