Files
ef_front/scripts/seed_contents.js
2025-09-07 22:57:43 +00:00

55 lines
1.3 KiB
JavaScript

const fs = require('node:fs');
const path = require('node:path');
const Papa = require('papaparse');
const { PrismaClient } = require('../app/generated/prisma');
async function main() {
const prisma = new PrismaClient();
const csvPath = path.resolve(process.cwd(), 'datas/contents.csv');
const csv = fs.readFileSync(csvPath, 'utf8');
const parsed = Papa.parse(csv, { header: true, skipEmptyLines: true });
if (parsed.errors && parsed.errors.length) {
console.error(parsed.errors);
process.exit(1);
}
for (const r of parsed.data) {
if (!r.Id) continue;
const pubDate = new Date(r.pubDate);
const views = Number(r.views ?? 0);
const validViews = Number(r.validViews ?? 0);
const premiumViews = Number(r.premiumViews ?? 0);
const watchTime = Math.round(Number(r.watchTime ?? 0));
await prisma.content.upsert({
where: { id: r.Id },
update: {
subject: r.subject,
pubDate,
views,
validViews,
premiumViews,
watchTime,
},
create: {
id: r.Id,
subject: r.subject,
pubDate,
views,
validViews,
premiumViews,
watchTime,
},
});
}
await prisma.$disconnect();
console.log('Seeded contents from CSV');
}
main().catch((e) => {
console.error(e);
process.exit(1);
});