44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import { PrismaClient } from "../src/generated/prisma"; // atau '@prisma/client' jika default
|
|
|
|
const prisma = new PrismaClient();
|
|
|
|
async function main() {
|
|
const prodiList = await prisma.programStudi.findMany({ select: { id: true } });
|
|
const semesterList = await prisma.semester.findMany({ select: { id: true } });
|
|
|
|
const namaGolongan = ["A", "B", "C", "D"];
|
|
|
|
for (const prodi of prodiList) {
|
|
for (const semester of semesterList) {
|
|
for (const name of namaGolongan) {
|
|
await prisma.golongan.upsert({
|
|
where: {
|
|
// gunakan kombinasi unik: prodiId, semesterId, name
|
|
prodiId_semesterId_name: {
|
|
prodiId: prodi.id,
|
|
semesterId: semester.id,
|
|
name,
|
|
},
|
|
},
|
|
update: {},
|
|
create: {
|
|
name,
|
|
prodi: { connect: { id: prodi.id } },
|
|
semester: { connect: { id: semester.id } },
|
|
},
|
|
});
|
|
console.log(`✅ Golongan '${name}' dibuat untuk prodi=${prodi.id}, semester=${semester.id}`);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
main()
|
|
.catch((e) => {
|
|
console.error("❌ Gagal seeding golongan:", e);
|
|
process.exit(1);
|
|
})
|
|
.finally(async () => {
|
|
await prisma.$disconnect();
|
|
});
|