diff --git a/scripts/delete-skills-without-results.ts b/scripts/delete-skills-without-results.ts new file mode 100644 index 000000000..e03210f9b --- /dev/null +++ b/scripts/delete-skills-without-results.ts @@ -0,0 +1,35 @@ +import "dotenv/config"; +import { db } from "~/db/sql"; +import { logger } from "~/utils/logger"; + +async function main() { + const skills = await db + .selectFrom("Skill") + .leftJoin("TournamentResult", (join) => + join + .onRef("TournamentResult.tournamentId", "=", "Skill.tournamentId") + .onRef("TournamentResult.userId", "=", "Skill.userId"), + ) + .select(["Skill.id"]) + .where("Skill.tournamentId", "is not", null) + .where("TournamentResult.tournamentId", "is", null) + .execute(); + + logger.info(`Found ${skills.length} skills without results`); + + await db + .updateTable("Skill") + .set({ + tournamentId: null, + }) + .where( + "id", + "in", + skills.map((skill) => skill.id), + ) + .execute(); + + logger.info("Deleted skills without results"); +} + +void main();