release: opensource snapshot 2026-02-27 19:25:00
This commit is contained in:
41
scripts/tmp-cleanup-project-models.mjs
Normal file
41
scripts/tmp-cleanup-project-models.mjs
Normal file
@@ -0,0 +1,41 @@
|
||||
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);
|
||||
Reference in New Issue
Block a user