51 lines
1.1 KiB
TypeScript
51 lines
1.1 KiB
TypeScript
import { createReadStream } from "node:fs";
|
|
import { createInterface } from "node:readline/promises";
|
|
|
|
import { Paragraph, PrismaClient } from "@prisma/client";
|
|
|
|
import { prismaClient } from "./lib/db";
|
|
|
|
const client = new PrismaClient();
|
|
|
|
async function processLineByLine() {
|
|
await prismaClient.$executeRaw`delete from Paragraph`;
|
|
const fileStream = createReadStream("../paragraph.json");
|
|
|
|
const rl = createInterface({
|
|
input: fileStream,
|
|
crlfDelay: Infinity,
|
|
});
|
|
|
|
let idx = 1;
|
|
|
|
let submitData: Paragraph[] = [];
|
|
|
|
for await (const line of rl) {
|
|
const data = JSON.parse(line);
|
|
idx++;
|
|
submitData.push({
|
|
id: data.id,
|
|
content: data.content,
|
|
cover: data.cover,
|
|
title: data.title,
|
|
tags: data.tags.join(","),
|
|
author: data.author,
|
|
markdown: data.markdown,
|
|
time: new Date(data.time.$date),
|
|
});
|
|
if (idx % 1000 === 0) {
|
|
console.log(idx);
|
|
await client.paragraph.createMany({
|
|
data: submitData,
|
|
});
|
|
submitData = [];
|
|
}
|
|
}
|
|
|
|
await client.paragraph.createMany({
|
|
data: submitData,
|
|
});
|
|
}
|
|
|
|
processLineByLine();
|