Penambahan fitur checklist terms of service dan penambahan database blockuser Add: - prisma/migrations/20251124061947_add_terms_of_service_accepted/ - prisma/migrations/20251124081155_add_blocked_user_and_menu_feature/ - prisma/migrations/20251124083155_fix_master_kategori_app_and_delete_menu_feature/ - public/terms-of-service.html - src/app/api/auth/term-service/ Fix: - prisma/schema.prisma - src/app/api/auth/register/route.ts - src/app/api/auth/validasi/route.ts - src/app_modules/_global/fun/generate_seeder.ts - src/bin/seeder/master/master_kategori_app.json - src/bin/seeder/user_seeder.json - src/middleware.tsx ### No Issue
680 lines
15 KiB
TypeScript
680 lines
15 KiB
TypeScript
import prisma from "@/lib/prisma";
|
|
import bidangBisnis from "../../../bin/seeder/bidang_bisnis.json";
|
|
import collaboration_industri from "../../../bin/seeder/colab/master_industri.json";
|
|
import collaboration_status from "../../../bin/seeder/colab/master_status.json";
|
|
import donasi_namaBank from "../../../bin/seeder/donasi/master_bank.json";
|
|
import donasi_durasi from "../../../bin/seeder/donasi/master_durasi.json";
|
|
import donasi_kategori from "../../../bin/seeder/donasi/master_kategori.json";
|
|
import donasi_status from "../../../bin/seeder/donasi/master_status.json";
|
|
import donasi_status_invoice from "../../../bin/seeder/donasi/master_status_invoice.json";
|
|
import event_status from "../../../bin/seeder/event/master_status.json";
|
|
import event_tipe_acara from "../../../bin/seeder/event/master_tipe_acara.json";
|
|
import forum_kategori_report from "../../../bin/seeder/forum/master_report.json";
|
|
import forum_status_posting from "../../../bin/seeder/forum/master_status.json";
|
|
import jenisProgres from "../../../bin/seeder/investasi/master_progres.json";
|
|
import pembagianDeviden from "../../../bin/seeder/investasi/pembagian_deviden.json";
|
|
import pencarianInvestor from "../../../bin/seeder/investasi/pencarian_investor.json";
|
|
import periodeDeviden from "../../../bin/seeder/investasi/periode_deviden.json";
|
|
import statusInvestasi from "../../../bin/seeder/investasi/status_investasi.json";
|
|
import statusTransaksiInvestasi from "../../../bin/seeder/investasi/status_transaksi_investasi.json";
|
|
import master_status from "../../../bin/seeder/master_status.json";
|
|
import nomor_admin from "../../../bin/seeder/nomor_admin.json";
|
|
import userRole from "../../../bin/seeder/user_role.json";
|
|
import userSeeder from "../../../bin/seeder/user_seeder.json";
|
|
import voting_status from "../../../bin/seeder/voting/master_status.json";
|
|
import { master_kategori_app } from "@/bin/seeder/master";
|
|
import { new_status_transaksi_investasi } from "@/bin/seeder/investasi";
|
|
import { master_nama_bank } from "@/bin/seeder/master";
|
|
import { master_status_transaksi } from "@/bin/seeder/master";
|
|
import pLimit from "p-limit";
|
|
import { master_new_bidang_bisnis } from "@/bin/seeder/master";
|
|
import { master_emotions } from "@/bin/seeder/master";
|
|
|
|
async function masterUserRole() {
|
|
for (let i of userRole) {
|
|
await prisma.masterUserRole.upsert({
|
|
where: {
|
|
id: i.id.toString(),
|
|
},
|
|
update: {
|
|
id: i.id.toString(),
|
|
name: i.name,
|
|
},
|
|
create: {
|
|
id: i.id.toString(),
|
|
name: i.name,
|
|
},
|
|
});
|
|
}
|
|
console.log("masterUserRole success");
|
|
}
|
|
|
|
async function seederUser() {
|
|
for (let i of userSeeder) {
|
|
await prisma.user.upsert({
|
|
where: {
|
|
nomor: i.nomor,
|
|
},
|
|
create: {
|
|
nomor: i.nomor,
|
|
username: i.name,
|
|
masterUserRoleId: i.masterUserRoleId,
|
|
active: i.active,
|
|
termsOfServiceAccepted: i.termsOfServiceAccepted,
|
|
},
|
|
update: {
|
|
nomor: i.nomor,
|
|
username: i.name,
|
|
masterUserRoleId: i.masterUserRoleId,
|
|
active: i.active,
|
|
termsOfServiceAccepted: i.termsOfServiceAccepted,
|
|
},
|
|
});
|
|
}
|
|
console.log("user seeder success");
|
|
}
|
|
|
|
// async function masterBisnis() {
|
|
// for (let i of bidangBisnis) {
|
|
// await prisma.masterBidangBisnis.upsert({
|
|
// where: {
|
|
// id: i.id.toString(),
|
|
// },
|
|
// update: {
|
|
// id: i.id.toString(),
|
|
// name: i.name,
|
|
// },
|
|
// create: {
|
|
// id: i.id.toString(),
|
|
// name: i.name,
|
|
// },
|
|
// });
|
|
// }
|
|
// console.log("masterBisnis success");
|
|
// }
|
|
|
|
async function masterNewBidangBisnis() {
|
|
for (let i of master_new_bidang_bisnis) {
|
|
try {
|
|
// Upsert MasterBidangBisnis
|
|
const masterBidangBisnis = await prisma.masterBidangBisnis.upsert({
|
|
where: {
|
|
id: i.id.toString(),
|
|
},
|
|
update: {
|
|
name: i.name,
|
|
slug: i.slug,
|
|
},
|
|
create: {
|
|
id: i.id.toString(),
|
|
name: i.name,
|
|
slug: i.slug,
|
|
},
|
|
});
|
|
|
|
// Upsert untuk setiap subBidangBisnis dengan await untuk memastikan urutan tetap terjaga
|
|
for (let sub of i.subBidangBisnis) {
|
|
await prisma.masterSubBidangBisnis.upsert({
|
|
where: {
|
|
id: sub.id,
|
|
},
|
|
update: {
|
|
name: sub.name,
|
|
slug: sub.slug,
|
|
masterBidangBisnisId: masterBidangBisnis.id,
|
|
},
|
|
create: {
|
|
id: sub.id,
|
|
name: sub.name,
|
|
slug: sub.slug,
|
|
masterBidangBisnisId: masterBidangBisnis.id,
|
|
},
|
|
});
|
|
}
|
|
} catch (error) {
|
|
console.error(
|
|
`Terjadi error saat upserting bidang bisnis ${i.name}:`,
|
|
error
|
|
);
|
|
}
|
|
}
|
|
|
|
console.log("Semua masterBidangBisnis dan subBidangBisnis berhasil di-seed");
|
|
}
|
|
|
|
async function masterPencarianInvestor() {
|
|
for (let i of pencarianInvestor) {
|
|
await prisma.masterPencarianInvestor.upsert({
|
|
where: {
|
|
id: i.id.toString(),
|
|
},
|
|
update: {
|
|
id: i.id.toString(),
|
|
name: i.name,
|
|
},
|
|
create: {
|
|
id: i.id.toString(),
|
|
name: i.name,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterPencarianInvestor success");
|
|
}
|
|
|
|
async function masterPembagianDeviden() {
|
|
for (let i of pembagianDeviden) {
|
|
await prisma.masterPembagianDeviden.upsert({
|
|
where: {
|
|
id: i.id.toString(),
|
|
},
|
|
update: {
|
|
id: i.id.toString(),
|
|
name: i.name,
|
|
},
|
|
create: {
|
|
id: i.id.toString(),
|
|
name: i.name,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterPembagianDeviden success");
|
|
}
|
|
|
|
async function masterPeriodeDeviden() {
|
|
for (let i of periodeDeviden) {
|
|
await prisma.masterPeriodeDeviden.upsert({
|
|
where: {
|
|
id: i.id.toString(),
|
|
},
|
|
update: {
|
|
id: i.id.toString(),
|
|
name: i.name,
|
|
},
|
|
create: {
|
|
id: i.id.toString(),
|
|
name: i.name,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterPeriodeDeviden success");
|
|
}
|
|
|
|
async function masterStatusInvestasi() {
|
|
for (let i of statusInvestasi) {
|
|
await prisma.masterStatusInvestasi.upsert({
|
|
where: {
|
|
id: i.id,
|
|
},
|
|
create: {
|
|
id: i.id,
|
|
name: i.name,
|
|
color: i.color,
|
|
},
|
|
update: {
|
|
id: i.id,
|
|
name: i.name,
|
|
color: i.color,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterStatusInvestasi success");
|
|
}
|
|
|
|
async function masterNamaBank() {
|
|
for (let i of master_nama_bank) {
|
|
await prisma.masterBank.upsert({
|
|
where: {
|
|
id: i.id.toString(),
|
|
},
|
|
create: {
|
|
id: i.id.toString(),
|
|
namaBank: i.namaBank,
|
|
namaAkun: i.namaAkun,
|
|
norek: i.norek.toString(),
|
|
},
|
|
update: {
|
|
id: i.id.toString(),
|
|
namaBank: i.namaBank,
|
|
namaAkun: i.namaAkun,
|
|
norek: i.norek.toString(),
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterNamaBank success");
|
|
}
|
|
|
|
async function masterStatusTransaksiInvestasi() {
|
|
for (let i of statusTransaksiInvestasi) {
|
|
await prisma.masterStatusTransaksiInvestasi.upsert({
|
|
where: {
|
|
id: i.id,
|
|
},
|
|
create: {
|
|
id: i.id,
|
|
name: i.name,
|
|
color: i.color,
|
|
},
|
|
update: {
|
|
id: i.id,
|
|
name: i.name,
|
|
color: i.color,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterStatusTransaksiInvestasi success");
|
|
}
|
|
|
|
async function masterProgressInvestasi() {
|
|
for (let i of jenisProgres) {
|
|
await prisma.masterProgresInvestasi.upsert({
|
|
where: {
|
|
id: i.id,
|
|
},
|
|
create: {
|
|
id: i.id,
|
|
name: i.name,
|
|
},
|
|
update: {
|
|
name: i.name,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterProgressInvestasi success");
|
|
}
|
|
|
|
async function masterStatusDonasi() {
|
|
for (let d of donasi_status) {
|
|
await prisma.donasiMaster_StatusDonasi.upsert({
|
|
where: {
|
|
id: d.id,
|
|
},
|
|
create: {
|
|
id: d.id,
|
|
name: d.name,
|
|
},
|
|
update: {
|
|
name: d.name,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterStatusDonasi success");
|
|
}
|
|
|
|
async function masterKategoriDonasi() {
|
|
for (let d of donasi_kategori) {
|
|
await prisma.donasiMaster_Kategori.upsert({
|
|
where: {
|
|
id: d.id,
|
|
},
|
|
create: {
|
|
id: d.id,
|
|
name: d.name,
|
|
},
|
|
update: {
|
|
name: d.name,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterKategoriDonasi success");
|
|
}
|
|
|
|
async function masterDurasiDonasi() {
|
|
for (let d of donasi_durasi) {
|
|
await prisma.donasiMaster_Durasi.upsert({
|
|
where: {
|
|
id: d.id,
|
|
},
|
|
create: {
|
|
id: d.id,
|
|
name: d.name,
|
|
},
|
|
update: {
|
|
name: d.name,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterDurasiDonasi success");
|
|
}
|
|
|
|
async function masterDonasiNamaBank() {
|
|
for (let i of donasi_namaBank) {
|
|
await prisma.donasiMaster_Bank.upsert({
|
|
where: {
|
|
id: i.id,
|
|
},
|
|
create: {
|
|
id: i.id,
|
|
name: i.name,
|
|
norek: i.norek,
|
|
},
|
|
update: {
|
|
id: i.id,
|
|
name: i.name,
|
|
norek: i.norek,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterDonasiBank success");
|
|
}
|
|
|
|
async function masterDonasiStatusInvoice() {
|
|
for (let d of donasi_status_invoice) {
|
|
await prisma.donasiMaster_StatusInvoice.upsert({
|
|
where: {
|
|
id: d.id,
|
|
},
|
|
create: {
|
|
id: d.id,
|
|
name: d.name,
|
|
},
|
|
update: {
|
|
name: d.name,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterDonasiStatusInvoice success");
|
|
}
|
|
|
|
async function masterEventStatus() {
|
|
for (let e of event_status) {
|
|
await prisma.eventMaster_Status.upsert({
|
|
where: {
|
|
id: e.id,
|
|
},
|
|
create: {
|
|
id: e.id,
|
|
name: e.name,
|
|
},
|
|
update: {
|
|
name: e.name,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterEventStatus success");
|
|
}
|
|
|
|
async function masterEventTipeAcara() {
|
|
for (let e of event_tipe_acara) {
|
|
await prisma.eventMaster_TipeAcara.upsert({
|
|
where: {
|
|
id: e.id,
|
|
},
|
|
create: {
|
|
id: e.id,
|
|
name: e.name,
|
|
},
|
|
update: {
|
|
name: e.name,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterEventTipeAcara success");
|
|
}
|
|
|
|
async function masterVotingStatus() {
|
|
for (let v of voting_status) {
|
|
await prisma.voting_Status.upsert({
|
|
where: {
|
|
id: v.id,
|
|
},
|
|
create: {
|
|
id: v.id,
|
|
name: v.name,
|
|
},
|
|
update: {
|
|
name: v.name,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterVotingStatus success");
|
|
}
|
|
|
|
async function masterStatusProses() {
|
|
for (let m of master_status) {
|
|
await prisma.masterStatus.upsert({
|
|
where: {
|
|
id: m.id,
|
|
},
|
|
create: {
|
|
id: m.id,
|
|
name: m.name,
|
|
},
|
|
update: {
|
|
name: m.name,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterStatusProses success");
|
|
}
|
|
|
|
async function masterForumKategoriReport() {
|
|
for (let m of forum_kategori_report) {
|
|
await prisma.forumMaster_KategoriReport.upsert({
|
|
where: {
|
|
id: m.id as number,
|
|
},
|
|
create: {
|
|
title: m.title,
|
|
deskripsi: m.deskripsi,
|
|
},
|
|
update: {
|
|
title: m.title,
|
|
deskripsi: m.deskripsi,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterForumKategoriReport success");
|
|
}
|
|
|
|
async function masterForumStatusPosting() {
|
|
for (let s of forum_status_posting) {
|
|
await prisma.forumMaster_StatusPosting.upsert({
|
|
where: {
|
|
id: s.id,
|
|
},
|
|
create: {
|
|
status: s.status,
|
|
},
|
|
update: {
|
|
status: s.status,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterForumStatusPosting success");
|
|
}
|
|
|
|
async function masterCollaborationIndustri() {
|
|
for (let p of collaboration_industri) {
|
|
await prisma.projectCollaborationMaster_Industri.upsert({
|
|
where: {
|
|
id: p.id,
|
|
},
|
|
create: {
|
|
name: p.name,
|
|
},
|
|
update: {
|
|
name: p.name,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterCollaborationIndustri success");
|
|
}
|
|
|
|
async function masterCollaborationStatus() {
|
|
for (let p of collaboration_status) {
|
|
await prisma.projectCollaborationMaster_Status.upsert({
|
|
where: {
|
|
id: p.id,
|
|
},
|
|
create: {
|
|
name: p.name,
|
|
},
|
|
update: {
|
|
name: p.name,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterCollaborationStatus success");
|
|
}
|
|
|
|
async function seederNomorAdmin() {
|
|
for (let a of nomor_admin) {
|
|
await prisma.nomorAdmin.upsert({
|
|
where: {
|
|
id: a.id,
|
|
},
|
|
create: {
|
|
id: a.id,
|
|
nomor: a.nomor,
|
|
},
|
|
update: {
|
|
id: a.id,
|
|
nomor: a.nomor,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("seederNomorAdmin success");
|
|
}
|
|
|
|
async function masterKategoriApp() {
|
|
for (let a of master_kategori_app) {
|
|
await prisma.masterKategoriApp.upsert({
|
|
where: {
|
|
id: a.id,
|
|
},
|
|
create: {
|
|
id: a.id,
|
|
name: a.name,
|
|
value: a.value,
|
|
},
|
|
update: {
|
|
id: a.id,
|
|
name: a.name,
|
|
value: a.value,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterKategoriApp success");
|
|
}
|
|
|
|
async function masterInvestasiNewTransaksiStatus() {
|
|
for (let a of new_status_transaksi_investasi) {
|
|
await prisma.investasiMaster_StatusInvoice.upsert({
|
|
where: {
|
|
id: a.id,
|
|
},
|
|
create: {
|
|
id: a.id,
|
|
name: a.name,
|
|
},
|
|
update: {
|
|
id: a.id,
|
|
name: a.name,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterInvestasiNewTransaksiStatus success");
|
|
}
|
|
|
|
async function masterStatusTransaksi() {
|
|
for (let a of master_status_transaksi) {
|
|
await prisma.masterStatusTransaksi.upsert({
|
|
where: {
|
|
id: a.id,
|
|
},
|
|
create: {
|
|
id: a.id,
|
|
name: a.name,
|
|
},
|
|
update: {
|
|
id: a.id,
|
|
name: a.name,
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log("masterStatusTransaksi success");
|
|
}
|
|
|
|
async function masterEmotions() {
|
|
await Promise.all(
|
|
master_emotions.map((a) =>
|
|
prisma.masterEmotions.upsert({
|
|
where: { value: a.value },
|
|
create: { value: a.value, label: a.label },
|
|
update: { value: a.value, label: a.label },
|
|
})
|
|
)
|
|
);
|
|
|
|
console.log("masterEmotions success");
|
|
}
|
|
|
|
const listSeederQueue = [
|
|
masterUserRole,
|
|
seederUser,
|
|
// masterBisnis,
|
|
masterNewBidangBisnis,
|
|
masterPencarianInvestor,
|
|
masterPembagianDeviden,
|
|
masterPeriodeDeviden,
|
|
masterStatusInvestasi,
|
|
masterNamaBank,
|
|
masterStatusTransaksiInvestasi,
|
|
masterProgressInvestasi,
|
|
masterStatusDonasi,
|
|
masterKategoriDonasi,
|
|
masterDurasiDonasi,
|
|
masterDonasiNamaBank,
|
|
masterDonasiStatusInvoice,
|
|
masterEventStatus,
|
|
masterEventTipeAcara,
|
|
masterVotingStatus,
|
|
masterStatusProses,
|
|
masterForumKategoriReport,
|
|
masterForumStatusPosting,
|
|
masterCollaborationIndustri,
|
|
masterCollaborationStatus,
|
|
seederNomorAdmin,
|
|
masterKategoriApp,
|
|
masterInvestasiNewTransaksiStatus,
|
|
masterStatusTransaksi,
|
|
masterEmotions,
|
|
];
|
|
const limit = pLimit(1);
|
|
|
|
export async function generate_seeder() {
|
|
try {
|
|
await Promise.all(listSeederQueue.map((fn) => limit(fn)));
|
|
await prisma.$disconnect();
|
|
} catch (error) {
|
|
console.error("error generate seeder", error);
|
|
await prisma.$disconnect();
|
|
}
|
|
|
|
return { status: 200, success: true };
|
|
}
|