42 lines
1.4 KiB
JavaScript
42 lines
1.4 KiB
JavaScript
import { PrismaClient } from '@prisma/client';
|
|
const p = new PrismaClient();
|
|
setTimeout(() => { console.error('TIMEOUT'); process.exit(1); }, 30000);
|
|
|
|
const userId = '3d84c341-87d7-4165-971d-a3f6c576aa21';
|
|
const needle = 'gemini-compatible:5b127c32-136e-4e5a-af74-8bae3e28be7a';
|
|
const modelFields = ['characterModel', 'locationModel', 'storyboardModel', 'editModel'];
|
|
|
|
// novelPromotionData is a relation, query directly
|
|
const npProjects = await p.novelPromotionProject.findMany({
|
|
where: { project: { userId } },
|
|
select: { id: true, projectId: true, characterModel: true, locationModel: true, storyboardModel: true, editModel: true, project: { select: { name: true } } }
|
|
});
|
|
|
|
let totalCleaned = 0;
|
|
|
|
for (const np of npProjects) {
|
|
const updates = {};
|
|
const cleanedFields = [];
|
|
|
|
for (const field of modelFields) {
|
|
if (typeof np[field] === 'string' && np[field].includes(needle)) {
|
|
updates[field] = '';
|
|
cleanedFields.push(`${field}: ${np[field]}`);
|
|
}
|
|
}
|
|
|
|
if (cleanedFields.length > 0) {
|
|
await p.novelPromotionProject.update({
|
|
where: { id: np.id },
|
|
data: updates
|
|
});
|
|
console.log(`✓ ${np.project.name} (${np.projectId}): cleared ${cleanedFields.length} fields`);
|
|
cleanedFields.forEach(f => console.log(` - ${f}`));
|
|
totalCleaned++;
|
|
}
|
|
}
|
|
|
|
console.log(`\nDone. Cleaned ${totalCleaned} projects.`);
|
|
await p.$disconnect();
|
|
process.exit(0);
|