haixunMaster/scripts/migrate-product-profiles.ts

44 lines
1.1 KiB
TypeScript

import { PrismaClient } from "@prisma/client";
import { parseProductContext } from "../lib/types/product-context";
const prisma = new PrismaClient();
async function main() {
const topics = await prisma.topic.findMany({
where: {
topicGoal: "placement",
productContext: { not: null },
productProfileId: null,
},
});
for (const topic of topics) {
const fields = parseProductContext(topic.productContext);
const label =
[fields.brand, fields.product].filter(Boolean).join(" · ") || topic.label;
const profile = await prisma.productProfile.create({
data: {
accountId: topic.accountId,
label,
context: topic.productContext!,
},
});
await prisma.topic.update({
where: { id: topic.id },
data: { productProfileId: profile.id },
});
console.log(`Migrated topic "${topic.label}" → profile "${label}"`);
}
console.log(`Done. Migrated ${topics.length} profile(s).`);
}
main()
.catch((err) => {
console.error(err);
process.exit(1);
})
.finally(() => prisma.$disconnect());