55 lines
1.3 KiB
JavaScript
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);
|
|
});
|
|
|
|
|