362 lines
14 KiB
TypeScript
362 lines
14 KiB
TypeScript
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
import prisma from "@/lib/prisma";
|
|
import { seedVideo } from "./_seeder_list/desa/gallery/video/seed_video";
|
|
import { seedLayanan } from "./_seeder_list/desa/layanan/seed_layanan";
|
|
import { seedPenghargaan } from "./_seeder_list/desa/penghargaan/penghargaan";
|
|
import { seedPengumuman } from "./_seeder_list/desa/pengumuman/seed_pengumuman";
|
|
import { seedPotensi } from "./_seeder_list/desa/potensi/seed_potensi";
|
|
import { seedProfileDesa } from "./_seeder_list/desa/profile-desa/seed_profile_desa";
|
|
import { seedProfilePerbekel } from "./_seeder_list/desa/profile-desa/seed_profile_perbekel";
|
|
import { seedDesaAntiKorupsi } from "./_seeder_list/landing-page/desa-anti-korupsi/seed_desa_anti_korupsi";
|
|
import { seedPrestasiDesa } from "./_seeder_list/landing-page/prestasi-desa/seed_prestasi_desa";
|
|
import { seedMediaSosial } from "./_seeder_list/landing-page/profil_landing_page/seed_media_sosial";
|
|
import { seedProfileLP } from "./_seeder_list/landing-page/profil_landing_page/seed_profile_lp";
|
|
import { seedProgramInovasi } from "./_seeder_list/landing-page/profil_landing_page/seed_program_inovasi";
|
|
import { seedSDGSDesa } from "./_seeder_list/landing-page/sdgs/seed_sdgs";
|
|
import { seedDaftarInformasiPublikPpid } from "./_seeder_list/ppid/daftar-informasi-publik-ppid/seed_daftar_informasi_publik_ppid";
|
|
import { seedDasarHukumPpid } from "./_seeder_list/ppid/dasar-hukum-ppid/seed_dasar_hukum_ppid";
|
|
import { seedIkmPpid } from "./_seeder_list/ppid/ikm/seed_ikm";
|
|
import { seedPegawaiPpid } from "./_seeder_list/ppid/struktur-ppid/seed_struktur_ppid";
|
|
import { seedVisiMisiPpid } from "./_seeder_list/ppid/visi-misi-ppid/seed_visi_misi_ppid";
|
|
import dataPendidikan from "./data/pendidikan/data-pendidikan/data-pendidikan.json";
|
|
import roles from "./data/user/roles.json";
|
|
import users from "./data/user/users.json";
|
|
import { safeSeedUnique } from "./safeseedUnique";
|
|
import seedAssets from "./seed_assets";
|
|
import { seedBerita } from "./_seeder_list/desa/berita/seed_berita";
|
|
import { seedFoto } from "./_seeder_list/desa/gallery/foto/seed_foto";
|
|
import { seedPosyandu } from "./_seeder_list/kesehatan/posyandu/seed_posyandu";
|
|
import { seedPuskesmas } from "./_seeder_list/kesehatan/puskesmas/seed_puskesmas";
|
|
import { seedProgramKesehatan } from "./_seeder_list/kesehatan/program-kesehatan/seed_program_kesehatan";
|
|
import { seedPenangananDarurat } from "./_seeder_list/kesehatan/penanganan-darurat/seed_penanganan_darurat";
|
|
import { seedKontakDarurat } from "./_seeder_list/kesehatan/kontak-darurat/seed_kontak_darurat";
|
|
import { seedInfoWabahPenyakit } from "./_seeder_list/kesehatan/info-wabah-penyakit/seed_info_wabah_penyakit";
|
|
import { seedKeamananLingkungan } from "./_seeder_list/keamanan/seed_keamanan_lingkungan";
|
|
import { seedPolsekTerdekat } from "./_seeder_list/keamanan/seed_polsek_terdekat";
|
|
import { seedKontakDaruratKeamanan } from "./_seeder_list/keamanan/seed_kontak_darurat";
|
|
import { seedPencegahanKriminalitas } from "./_seeder_list/keamanan/seed_pencegahan_kriminalitas";
|
|
import { seedLaporanPublik } from "./_seeder_list/keamanan/seed_laporan_publik";
|
|
import { seedPasarDesa } from "./_seeder_list/ekonomi/seed_pasar_desa";
|
|
import { seedLowonganKerjaLokal } from "./_seeder_list/ekonomi/seed_lowongan_kerja_lokal";
|
|
import { seedDemografiPekerjaan } from "./_seeder_list/ekonomi/seed_demografi_pekerjaan";
|
|
import { seedSektorUnggulanDesa } from "./_seeder_list/ekonomi/seed_sektor_unggulan_desa";
|
|
import { seedProgramKemiskinan } from "./_seeder_list/ekonomi/seed_program_kemiskinan";
|
|
import { seedJumlahPendudukMiskin } from "./_seeder_list/ekonomi/seed_jumlah_penduduk_miskin";
|
|
import { seedPendudukUsiaKerjaYangMenganggur } from "./_seeder_list/ekonomi/seed_penduduk_usia_kerja_yang_menganggur";
|
|
import { seedJumlahPengangguran } from "./_seeder_list/ekonomi/seed_jumlah_pengangguran";
|
|
import { seedPendapatanAsli } from "./_seeder_list/ekonomi/seed_pendapatan_asli";
|
|
import { seedStrukturBumdes } from "./_seeder_list/ekonomi/seed_struktur_bumdes";
|
|
import { seedAjukan } from "./_seeder_list/inovasi/seed_ajukan";
|
|
import { seedDesaDigital } from "./_seeder_list/inovasi/seed_desa_digital";
|
|
import { seedLayananOnlineDesa } from "./_seeder_list/inovasi/seed_layanan_online_desa";
|
|
import { seedProgramKreatifDesa } from "./_seeder_list/inovasi/seed_program_kreatif_desa";
|
|
import { seedKolaborasiInovasi } from "./_seeder_list/inovasi/seed_kolaborasi_inovasi";
|
|
import { seedInfoTeknologi } from "./_seeder_list/inovasi/seed_info_teknologi";
|
|
import { seedPengelolaanSampah } from "./_seeder_list/lingkungan/seed_pengelolaan_sampah";
|
|
import { seedProgramPenghijauan } from "./_seeder_list/lingkungan/seed_program_penghijauan";
|
|
import { seedDataLingkunganDesa } from "./_seeder_list/lingkungan/seed_data_lingkungan_desa";
|
|
import { seedDataGotongRoyong } from "./_seeder_list/lingkungan/seed_data_gotong_royong";
|
|
import { seedEdukasiLingkungan } from "./_seeder_list/lingkungan/seed_edukasi_lingkungan";
|
|
import { seedKonservasiAdatBali } from "./_seeder_list/lingkungan/seed_konservasi_adat_bali";
|
|
import { seedInfoSekolah } from "./_seeder_list/pendidikan/seed_info_sekolah";
|
|
import { seedInfoProgramPendidikan } from "./_seeder_list/pendidikan/seed_info_program_pendidikan";
|
|
import { seedBimbinganBelajar } from "./_seeder_list/pendidikan/seed_bimbingan_belajar";
|
|
import { seedDataPendidikan } from "./_seeder_list/pendidikan/seed_data_pendidikan";
|
|
import { seedPendidikanNonFormal } from "./_seeder_list/pendidikan/seed_pendidikan_non_formal";
|
|
import { seedDataPerpustakaan } from "./_seeder_list/pendidikan/seed_data_perpustakaan";
|
|
import { seedProfilPpd } from "./_seeder_list/ppid/profil-ppid/seed_profil_ppd";
|
|
|
|
(async () => {
|
|
// Always run seedAssets to handle new images without duplication
|
|
console.log("📂 Checking for new assets to seed...");
|
|
await seedAssets();
|
|
|
|
// // =========== FILE STORAGE ===========
|
|
|
|
console.log("🔄 Seeding roles...");
|
|
|
|
for (const r of roles) {
|
|
try {
|
|
// ✅ Destructure to remove permissions if exists
|
|
const { permissions, ...roleData } = r as any;
|
|
|
|
await safeSeedUnique(
|
|
"role",
|
|
{ name: roleData.name },
|
|
{
|
|
id: roleData.id,
|
|
name: roleData.name,
|
|
description: roleData.description,
|
|
permissions: roleData.permissions || {}, // ✅ Include permissions
|
|
isActive: roleData.isActive,
|
|
},
|
|
);
|
|
console.log(`✅ Seeded role -> ${roleData.name}`);
|
|
} catch (error: any) {
|
|
if (error.code === "P2002") {
|
|
console.warn(`⚠️ Role already exists (skipping): ${r.name}`);
|
|
} else {
|
|
console.error(`❌ Failed to seed role ${r.name}:`, error.message);
|
|
}
|
|
}
|
|
}
|
|
console.log("✅ Roles seeding completed");
|
|
|
|
// =========== USER ===========
|
|
console.log("🔄 Seeding users...");
|
|
for (const u of users) {
|
|
try {
|
|
// Verify role exists first
|
|
const roleExists = await prisma.role.findUnique({
|
|
where: { id: u.roleId.toString() },
|
|
select: { id: true }, // Only select id to minimize query
|
|
});
|
|
|
|
if (!roleExists) {
|
|
console.error(
|
|
`❌ Role with id ${u.roleId} not found for user ${u.username}`,
|
|
);
|
|
continue;
|
|
}
|
|
|
|
await safeSeedUnique(
|
|
"user",
|
|
{ nomor: u.nomor },
|
|
{
|
|
id: u.id,
|
|
username: u.username,
|
|
nomor: u.nomor,
|
|
roleId: u.roleId.toString(),
|
|
isActive: u.isActive,
|
|
sessionInvalid: false,
|
|
},
|
|
);
|
|
console.log(`✅ Seeded user -> ${u.username}`);
|
|
} catch (error: any) {
|
|
if (error.code === "P2003") {
|
|
console.error(
|
|
`❌ Foreign key constraint failed for user ${u.username}: Role ${u.roleId} does not exist`,
|
|
);
|
|
} else {
|
|
console.error(`❌ Failed to seed user ${u.username}:`, error.message);
|
|
}
|
|
}
|
|
}
|
|
console.log("✅ Users seeding completed");
|
|
// =========== LANDING PAGE ===========
|
|
// =========== SUBMENU PROFILE ===========
|
|
await seedProgramInovasi();
|
|
await seedProfileLP();
|
|
await seedMediaSosial();
|
|
|
|
// // =========== SUBMENU DESA ANTI KORUPSI ===========
|
|
await seedDesaAntiKorupsi();
|
|
|
|
// // =========== SDGSDesa ===========
|
|
await seedSDGSDesa();
|
|
|
|
// // =========== APBDes ===========
|
|
// for (const l of apbdes) {
|
|
// await prisma.aPBDes.upsert({
|
|
// where: {
|
|
// id: l.id,
|
|
// },
|
|
// update: {
|
|
// name: l.name,
|
|
// jumlah: l.jumlah,
|
|
// },
|
|
// create: {
|
|
// name: l.name,
|
|
// jumlah: l.jumlah,
|
|
// },
|
|
// });
|
|
// }
|
|
|
|
// console.log("apbdes success ...");
|
|
|
|
// // =========== PRESTASI DESA===========
|
|
await seedPrestasiDesa();
|
|
|
|
// // =========== MENU PPID ===========
|
|
|
|
// // =========== SUBMENU PROFIL PPID ===========
|
|
await seedProfilPpd();
|
|
|
|
// // =========== SUBMENU STRUKTUR PPID ===========
|
|
await seedPegawaiPpid();
|
|
|
|
// // =========== SUBMENU VISI MISI PPID ===========
|
|
await seedVisiMisiPpid();
|
|
|
|
// // =========== SUBMENU DASAR HUKUM PPID ===========
|
|
await seedDasarHukumPpid();
|
|
|
|
// // =========== SUBMENU DAFTAR INFORMASI PUBLIK PPID ===========
|
|
await seedDaftarInformasiPublikPpid();
|
|
|
|
// // =========== SUBMENU INDEKS KEPUASAN MASYARAKAT ===========
|
|
await seedIkmPpid();
|
|
|
|
// // =========== MENU DESA ===========
|
|
// // =========== SUBMENU PROFILE ===========
|
|
await seedProfileDesa();
|
|
await seedProfilePerbekel();
|
|
|
|
// // =========== SUBMENU POTENSI DESA ===========
|
|
await seedPotensi();
|
|
|
|
// // =========== SUBMENU BERITA ===========
|
|
await seedBerita();
|
|
|
|
// // ================== SUBMENU PENGUMUMAN ========================
|
|
await seedPengumuman();
|
|
|
|
// // ================== SUBMENU GALLERY ========================
|
|
await seedVideo();
|
|
await seedFoto();
|
|
|
|
// // =========== SUBMENU LAYANAN ===========
|
|
await seedLayanan();
|
|
|
|
// // =========== PENGHARGAAN ===========
|
|
await seedPenghargaan();
|
|
|
|
// // ====================== MENU KESEHATAN ========================
|
|
// // ==================== SUBMENU POSYANDU =========================
|
|
await seedPosyandu();
|
|
|
|
// // ==================== SUBMENU PUSKESMAS =========================
|
|
await seedPuskesmas();
|
|
|
|
// // ==================== SUBMENU PROGRAM KESEHATAN =========================
|
|
await seedProgramKesehatan();
|
|
|
|
// // ==================== SUBMENU PENANGANAN DARURAT =========================
|
|
await seedPenangananDarurat();
|
|
|
|
// // ==================== SUBMENU KONTAK DARURAT =========================
|
|
await seedKontakDarurat();
|
|
|
|
// // ==================== SUBMENU INFO WABAH PENYAKIT =========================
|
|
await seedInfoWabahPenyakit();
|
|
|
|
// // ====================== MENU KEAMANAN ========================
|
|
// // ==================== SUBMENU KEAMANAN LINGKUNGAN ============
|
|
await seedKeamananLingkungan();
|
|
|
|
// // ==================== SUBMENU POLSEK TERDEKAT ================
|
|
await seedPolsekTerdekat();
|
|
|
|
// // ==================== SUBMENU KONTAK DARURAT =================
|
|
await seedKontakDaruratKeamanan();
|
|
|
|
// // ==================== SUBMENU PENCEGAHAN KRIMINALITAS ========
|
|
await seedPencegahanKriminalitas();
|
|
// // ==================== SUBMENU LAPORAN PUBLIK =================
|
|
await seedLaporanPublik();
|
|
|
|
// // ==================== SUBMENU TIPS KEAMANAN ==================
|
|
await seedKeamananLingkungan();
|
|
|
|
// // ====================== MENU EKONOMI ========================
|
|
// // ==================== SUBMENU PASAR DESA ====================
|
|
await seedPasarDesa();
|
|
|
|
// // ==================== SUBMENU LOWONGAN KERJA LOKAL ==========
|
|
await seedLowonganKerjaLokal();
|
|
|
|
// // ==================== SUBMENU STRUKTUR ORGANISASI DAN SK PENGURUS BUMDES ==========
|
|
await seedStrukturBumdes();
|
|
|
|
// // ==================== SUBMENU PENDAPATAN ASLI DESA ==========
|
|
await seedPendapatanAsli();
|
|
|
|
// // ==================== SUBMENU JUMLAH PENGANGGURAN ==========
|
|
await seedJumlahPengangguran();
|
|
|
|
// // ==================== SUBMENU PENDUDUK USIA KERJA ==========
|
|
await seedPendudukUsiaKerjaYangMenganggur();
|
|
|
|
// // ==================== SUBMENU PENDUDUK MISKIN =============
|
|
await seedJumlahPendudukMiskin();
|
|
|
|
// // ==================== SUBMENU PROGRAM KEMISKINAN =============
|
|
await seedProgramKemiskinan();
|
|
|
|
// // ==================== SUBMENU SEKTOR UNGGULAN DESA =============
|
|
await seedSektorUnggulanDesa();
|
|
|
|
// // ==================== SUBMENU DEMOGRAFI PEKERJAAN =============
|
|
await seedDemografiPekerjaan();
|
|
|
|
// // ====================== MENU INOVASI ==========================
|
|
// // ====================== SUBMENU AJUKAN IDE INOVATIF ===========
|
|
await seedAjukan();
|
|
// // ==================== SUBMENU DESA DIGITAL ====================
|
|
await seedDesaDigital();
|
|
|
|
// // ==================== SUBMENU LAYANAN ONLINE DESA ==========
|
|
await seedLayananOnlineDesa();
|
|
|
|
// // ==================== SUBMENU PROGRAM KREATIF ==========
|
|
await seedProgramKreatifDesa();
|
|
// // ==================== SUBMENU KOLABORASI INOVASI ==========
|
|
await seedKolaborasiInovasi();
|
|
|
|
// // ==================== SUBMENU INFO TEKNOLOGI TEPAT GUNA ==========
|
|
await seedInfoTeknologi();
|
|
|
|
// // ====================== MENU LINGKUNGAN ==========================
|
|
// // ==================== SUBMENU PENGELOLAAN SAMPAH ==========
|
|
await seedPengelolaanSampah();
|
|
|
|
// // ==================== SUBMENU PROGRAM PENGHIJAUAN ==========
|
|
await seedProgramPenghijauan();
|
|
|
|
// // ==================== SUBMENU DATA LINGKUNGAN DESA ==========
|
|
await seedDataLingkunganDesa();
|
|
|
|
// // =========== SUBMENU GOTONG ROYONG ===========
|
|
await seedDataGotongRoyong();
|
|
|
|
// // =========== SUBMENU EDUKASI LINGKUNGAN ===========
|
|
await seedEdukasiLingkungan();
|
|
|
|
// // =========== SUBMENU KONSERVASI ADAT BALI ===========
|
|
await seedKonservasiAdatBali();
|
|
|
|
// // ====================== MENU PENDIDIKAN ==========================
|
|
// // =========== SUBMENU INFO SEKOLAH =====================
|
|
await seedInfoSekolah();
|
|
|
|
// // =========== SUBMENU PROGRAM PENDIDIKAN ANAK =====================
|
|
|
|
await seedInfoProgramPendidikan();
|
|
|
|
// // =========== SUBMENU BIMBINGAN BELAJAR DESA =====================
|
|
await seedBimbinganBelajar();
|
|
|
|
// // =========== SUBMENU PENDIDIKAN NON FORMAL =====================
|
|
await seedPendidikanNonFormal();
|
|
// // =========== SUBMENU PERPUSTAKAAN DIGITAL =====================
|
|
await seedDataPerpustakaan();
|
|
|
|
// =========== SUBMENU DATA PENDIDIKAN =====================
|
|
await seedDataPendidikan();
|
|
})()
|
|
.then(() => prisma.$disconnect())
|
|
.catch((e) => {
|
|
console.error(e);
|
|
prisma.$disconnect();
|
|
});
|
|
|
|
process.on("exit", () => {
|
|
prisma.$disconnect();
|
|
});
|
|
|
|
process.on("SIGINT", () => {
|
|
prisma.$disconnect();
|
|
process.exit(0);
|
|
});
|