43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
/**
|
||
* 一次性脚本:按新 6 色池(品牌蓝 + 多邻国绿/紫/红/黄/橙)重算并更新所有课程的 theme_color
|
||
* 使用:npx ts-node scripts/backfill-theme-colors.ts
|
||
*/
|
||
|
||
import { PrismaClient } from '@prisma/client';
|
||
import { generateThemeColor } from '../src/utils/courseTheme';
|
||
|
||
const prisma = new PrismaClient();
|
||
|
||
async function main() {
|
||
const courses = await prisma.course.findMany({
|
||
select: { id: true },
|
||
where: { deletedAt: null },
|
||
});
|
||
|
||
if (courses.length === 0) {
|
||
console.log('[BackfillThemeColors] 没有课程,跳过');
|
||
return;
|
||
}
|
||
|
||
console.log(`[BackfillThemeColors] 共 ${courses.length} 门课程,开始按 courseId 哈希重算 theme_color...`);
|
||
|
||
let updated = 0;
|
||
for (const c of courses) {
|
||
const themeColor = generateThemeColor(c.id);
|
||
await prisma.course.update({
|
||
where: { id: c.id },
|
||
data: { themeColor },
|
||
});
|
||
updated++;
|
||
}
|
||
|
||
console.log(`[BackfillThemeColors] 已更新 ${updated} 门课程的 theme_color(6 色池:品牌蓝 + 多邻国绿/紫/红/黄/橙)`);
|
||
}
|
||
|
||
main()
|
||
.catch((e) => {
|
||
console.error(e);
|
||
process.exit(1);
|
||
})
|
||
.finally(() => prisma.$disconnect());
|