diff --git a/scripts/reset-vote-data.mjs b/scripts/reset-vote-data.mjs new file mode 100644 index 0000000..246bcb1 --- /dev/null +++ b/scripts/reset-vote-data.mjs @@ -0,0 +1,59 @@ +// 清空投票相关测试数据,准备重新测试。 +// +// 清:votes / fan_supports / daily_quota / sign_ins / risk_logs / ranking_snapshots +// reset:artists.vote_count = 0, artists.current_rank = null +// 保留:users / artists 配置 / activity_config / invitations +import { PrismaClient } from "@prisma/client"; +const prisma = new PrismaClient({ log: ["error"] }); + +console.log("=== 清空投票测试数据 ===\n"); + +// 跑前 snapshot +const before = { + votes: await prisma.vote.count(), + fanSupports: await prisma.fanSupport.count(), + dailyQuotas: await prisma.dailyQuota.count(), + signIns: await prisma.signIn.count(), + riskLogs: await prisma.riskLog.count(), + snapshots: await prisma.rankingSnapshot.count(), + artistsWithVotes: await prisma.artist.count({ where: { voteCount: { gt: 0 } } }), +}; +console.log("清前:", before); + +await prisma.$transaction( + async (tx) => { + await tx.vote.deleteMany({}); + await tx.fanSupport.deleteMany({}); + await tx.dailyQuota.deleteMany({}); + await tx.signIn.deleteMany({}); + await tx.riskLog.deleteMany({}); + await tx.rankingSnapshot.deleteMany({}); + // reset artists 缓存 + await tx.artist.updateMany({ + data: { voteCount: 0, currentRank: null }, + }); + }, + { timeout: 30000 }, +); + +const after = { + votes: await prisma.vote.count(), + fanSupports: await prisma.fanSupport.count(), + dailyQuotas: await prisma.dailyQuota.count(), + signIns: await prisma.signIn.count(), + riskLogs: await prisma.riskLog.count(), + snapshots: await prisma.rankingSnapshot.count(), + artistsWithVotes: await prisma.artist.count({ where: { voteCount: { gt: 0 } } }), +}; +console.log("\n清后:", after); + +// 同时确认保留了什么 +const preserved = { + users: await prisma.user.count(), + artists: await prisma.artist.count(), + activityConfig: await prisma.activityConfig.count(), +}; +console.log("保留:", preserved); + +await prisma.$disconnect(); +console.log("\n✓ 完成");