74 lines
2.6 KiB
JavaScript
74 lines
2.6 KiB
JavaScript
import { PrismaClient } from "@prisma/client";
|
|
import { PrismaMariaDb } from "@prisma/adapter-mariadb";
|
|
import "dotenv/config";
|
|
|
|
const base = (process.env.DATABASE_URL || "mysql://localhost:3306/zhuiguang_ai?charset=utf8mb4").replace("mysql://", "mariadb://");
|
|
const sep = base.includes("?") ? "&" : "?";
|
|
const connectionString = `${base}${sep}connection_limit=20&pool_timeout=30`;
|
|
const adapter = new PrismaMariaDb(connectionString);
|
|
const prisma = new PrismaClient({ adapter });
|
|
|
|
async function main() {
|
|
console.log("🔧 内容整理脚本\n");
|
|
|
|
// 1. 删除 JavaGuide 的评测(非AI项目不应有评测)
|
|
const javaGuide = await prisma.skillReview.findFirst({
|
|
where: { skill: { name: { contains: "JavaGuide" } } },
|
|
include: { skill: true },
|
|
});
|
|
if (javaGuide) {
|
|
await prisma.skillReview.delete({ where: { id: javaGuide.id } });
|
|
console.log(`🗑️ 已删除 JavaGuide 评测 #${javaGuide.id}`);
|
|
}
|
|
|
|
// 2. 删除 system-prompts 评测(纯资源收集,非AI工具)
|
|
const sysPrompts = await prisma.skillReview.findFirst({
|
|
where: { skill: { name: { contains: "system-prompts" } } },
|
|
include: { skill: true },
|
|
});
|
|
if (sysPrompts) {
|
|
await prisma.skillReview.delete({ where: { id: sysPrompts.id } });
|
|
console.log(`🗑️ 已删除 system-prompts 评测 #${sysPrompts.id}`);
|
|
}
|
|
|
|
// 3. 发布所有 DRAFT 评测
|
|
const draftReviews = await prisma.skillReview.findMany({
|
|
where: { status: "DRAFT" },
|
|
include: { skill: { select: { name: true } } },
|
|
});
|
|
for (const r of draftReviews) {
|
|
await prisma.skillReview.update({
|
|
where: { id: r.id },
|
|
data: { status: "PUBLISHED" },
|
|
});
|
|
console.log(`✅ 已发布评测 #${r.id}: ${r.skill.name} (overall: ${r.overall})`);
|
|
}
|
|
|
|
// 4. 发布所有 DRAFT 技能
|
|
const draftSkills = await prisma.skill.findMany({
|
|
where: { status: "draft" },
|
|
});
|
|
for (const s of draftSkills) {
|
|
await prisma.skill.update({
|
|
where: { id: s.id },
|
|
data: { status: "published" },
|
|
});
|
|
console.log(`✅ 已发布技能 #${s.id}: ${s.name}`);
|
|
}
|
|
|
|
// 5. 统计最终状态
|
|
const [skillTotal, publishedSkills, reviewTotal, publishedReviews] = await Promise.all([
|
|
prisma.skill.count(),
|
|
prisma.skill.count({ where: { status: "published" } }),
|
|
prisma.skillReview.count(),
|
|
prisma.skillReview.count({ where: { status: "PUBLISHED" } }),
|
|
]);
|
|
|
|
console.log(`\n📊 整理后状态:`);
|
|
console.log(` 技能: ${publishedSkills}/${skillTotal} 已发布`);
|
|
console.log(` 评测: ${publishedReviews}/${reviewTotal} 已发布`);
|
|
}
|
|
|
|
main()
|
|
.catch((e) => { console.error("💥", e.message); process.exit(1); })
|
|
.finally(() => prisma.$disconnect()); |