Skip to content

Commit 7f66d08

Browse files
committed
createMany で追加するスクリプトを追加
1 parent 7bfc39d commit 7f66d08

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
import * as fs from "node:fs";
2+
import * as path from "node:path";
3+
4+
import { prisma } from "../database/client";
5+
6+
// シ楽バス形式のデータを読み込む。
7+
const FILE_PATH = path.join(__dirname, "data.json");
8+
9+
async function main() {
10+
const jsonData = JSON.parse(fs.readFileSync(FILE_PATH, "utf-8"));
11+
12+
const coursesData = jsonData.map(
13+
(course: {
14+
code: string;
15+
titleJp: string;
16+
lecturerJp: string;
17+
}) => {
18+
const { code, titleJp, lecturerJp } = course;
19+
return {
20+
id: code,
21+
name: titleJp,
22+
teacher: lecturerJp,
23+
};
24+
},
25+
);
26+
27+
await prisma.course.createMany({
28+
data: coursesData,
29+
});
30+
31+
const slotsData: {
32+
day: "mon" | "tue" | "wed" | "thu" | "fri" | "sat" | "sun" | "other";
33+
period: number;
34+
courseId: string;
35+
}[] = [];
36+
37+
for (const courseData of jsonData) {
38+
const { code, periods } = courseData;
39+
40+
for (const period of periods) {
41+
const [dayJp, periodStr] = period.split("");
42+
const day =
43+
dayJp === "月"
44+
? "mon"
45+
: dayJp === "火"
46+
? "tue"
47+
: dayJp === "水"
48+
? "wed"
49+
: dayJp === "木"
50+
? "thu"
51+
: dayJp === "金"
52+
? "fri"
53+
: dayJp === "土"
54+
? "sat"
55+
: dayJp === "日"
56+
? "sun"
57+
: "other";
58+
59+
slotsData.push({
60+
day,
61+
period: Number.parseInt(periodStr) || 0,
62+
courseId: code,
63+
});
64+
}
65+
}
66+
67+
await prisma.slot.createMany({
68+
data: slotsData,
69+
skipDuplicates: true,
70+
});
71+
72+
console.log("Data inserted successfully!");
73+
}
74+
75+
main()
76+
.then(async () => {
77+
await prisma.$disconnect();
78+
})
79+
.catch(async (e) => {
80+
console.error(e);
81+
await prisma.$disconnect();
82+
process.exit(1);
83+
});

0 commit comments

Comments
 (0)