Compare commits

...

1 Commits

Author SHA1 Message Date
d9ce4aac6d Seed Pendidikan 2026-01-23 16:51:35 +08:00
24 changed files with 3187 additions and 421 deletions

View File

@@ -1,23 +1,23 @@
[
{
"id": "dd92a029-cd7d-4b60-8a3b-dd88e61fe715",
"id": "c2760e40-f770-11f0-89ff-719f813f71b3",
"nama": "BLT-DD (Bantuan Langsung Tunai Dana Desa)",
"icon": "bantuan",
"deskripsi": "<p>Program pemberian Bantuan Langsung Tunai yang dibiayai dari Dana Desa untuk meringankan beban ekonomi keluarga miskin/prasejahtera di Desa Darmasaba.</p>",
"statistikId": "d59481a3-ff7f-4e52-cd5c-89e143eeb869"
"tahun": 2023
},
{
"id": "dd92a029-cd7d-4b60-9b4c-dd88e61fe715",
"id": "c7f0f2e0-f770-11f0-89ff-719f813f71b3",
"nama": "Penguatan Ketahanan Pangan",
"icon": "air",
"deskripsi": "<p>Kegiatan pemberdayaan masyarakat dalam ketahanan pangan untuk mendukung ketersediaan pangan keluarga kurang mampu dan meningkatkan kemampuan produksi pangan lokal.</p>",
"statistikId": "d59481a3-ff7f-4e52-de6d-89e143eeb869"
"tahun": 2024
},
{
"id": "dd92a029-cd7d-4b60-0c5d-dd88e61fe715",
"id": "ccda45e0-f770-11f0-89ff-719f813f71b3",
"nama": "Peningkatan IKM berbasis E-commerce",
"icon": "ekonomi",
"deskripsi": "<p>Program peningkatan keterampilan usaha mikro kecil (IKM) termasuk pelatihan branding, pengemasan, dan promosi digital untuk memperkuat ekonomi rumah tangga melalui pemasaran online.</p>",
"statistikId": "d59481a3-ff7f-4e52-df7e-89e143eeb869"
"tahun": 2025
}
]

View File

@@ -1,16 +1,16 @@
[
{
"id": "d59481a3-ff7f-4e52-cd5c-89e143eeb869",
"id": "85d8a150-f770-11f0-89ff-719f813f71b3",
"tahun": 2023,
"jumlah": 20
},
{
"id": "d59481a3-ff7f-4e52-de6d-89e143eeb869",
"id": "993b8d20-f770-11f0-89ff-719f813f71b3",
"tahun": 2024,
"jumlah": 30
},
{
"id": "d59481a3-ff7f-4e52-df7e-89e143eeb869",
"id": "9eb3b2a0-f770-11f0-89ff-719f813f71b3",
"tahun": 2025,
"jumlah": 20
}

View File

@@ -1144,21 +1144,21 @@
"category": "image"
},
{
"id": "cmkccs50d0000vn2mfuk0d9dw",
"name": "U7rePDZq5E59z-Eo9tLBe-desktop.webp",
"id": "cmkp70z5g0000vnu9b0aieem8",
"name": "vwZsaxcoFWDlxG1PW7FC0-desktop.webp",
"realName": "tips-keamanan-1.jpg",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/U7rePDZq5E59z-Eo9tLBe-desktop.webp",
"link": "/api/fileStorage/findUnique/vwZsaxcoFWDlxG1PW7FC0-desktop.webp",
"category": "image"
},
{
"id": "cmkccyh7t0003vn2mjdrqtuu0",
"name": "TTur8BttDlAS9UgZVe3M8-desktop.webp",
"id": "cmkp71pub0003vnu9ef60huuv",
"name": "dSe0xyvNLkP2t2f6iq-Hk-desktop.webp",
"realName": "tipskaman.jpg",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/TTur8BttDlAS9UgZVe3M8-desktop.webp",
"link": "/api/fileStorage/findUnique/dSe0xyvNLkP2t2f6iq-Hk-desktop.webp",
"category": "image"
},
{
@@ -1224,7 +1224,7 @@
"link": "/api/fileStorage/findUnique/uE2QwpbcXyBWxVYqCWQQT-desktop.webp",
"category": "image"
},
{
{
"id": "cmkkx9e38000bvni4azjd3u53",
"name": "SQqSobKRg3ShvgPw_H41h-desktop.webp",
"realName": "pengaduan1.webp",
@@ -1287,7 +1287,7 @@
"link": "/api/fileStorage/findUnique/h_Gd0SoeIJVTi_5TWUO-P-desktop.webp",
"category": "image"
},
{
{
"id": "cmkm1zis2000bvnsw85m6wdlf",
"name": "qJFWokQLCaO60j0XJU_33-desktop.webp",
"realName": "mitrakl1.jpg",
@@ -1314,7 +1314,7 @@
"link": "/api/fileStorage/findUnique/JFd5C2FoaZcgDQUmvp-AO-desktop.webp",
"category": "image"
},
{
{
"id": "cmkm3b1a2000nvnswb9x48dzk",
"name": "JjUDrfqxuEMYSAza-s7A8-desktop.webp",
"realName": "desa-digital.jpeg",
@@ -1350,7 +1350,7 @@
"link": "/api/fileStorage/findUnique/TrbkwnYM5rKZeHlISHCX4-desktop.webp",
"category": "image"
},
{
{
"id": "cmknb59md0000vnmam828iuzt",
"name": "YgOX5qAP3O1PHG5XmQXkr-desktop.webp",
"realName": "gr-1.jpg",
@@ -1376,5 +1376,185 @@
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/iHTVkQZ1VdkMOXLt5qdAd-desktop.webp",
"category": "image"
},
{
"id": "cmkqhbhxi0000vneamj3din9u",
"name": "RnAdv7O0QAFrxkFLAXJSa-desktop.webp",
"realName": "buku1.jpeg",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/RnAdv7O0QAFrxkFLAXJSa-desktop.webp",
"category": "image"
},
{
"id": "cmkqhed8x0003vneakx0c7me2",
"name": "71eZShq4FYAFLxpLfZB0W-desktop.webp",
"realName": "buku2.jpg",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/71eZShq4FYAFLxpLfZB0W-desktop.webp",
"category": "image"
},
{
"id": "cmkqhg1cb0006vneagsxa6t4t",
"name": "Uxq3GXPqh7HN9fHmRkr3r-desktop.webp",
"realName": "buku3.jpg",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/Uxq3GXPqh7HN9fHmRkr3r-desktop.webp",
"category": "image"
},
{
"id": "cmkqhl6mv0009vneasgix42ud",
"name": "W5Fc0uRADNkIY3nZicvQA-desktop.webp",
"realName": "buku4.jpg",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/W5Fc0uRADNkIY3nZicvQA-desktop.webp",
"category": "image"
},
{
"id": "cmkqhoa5w000cvneah15n28zq",
"name": "mp77Op-MwtPQZnH3so4JY-desktop.webp",
"realName": "buku5.jpeg",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/mp77Op-MwtPQZnH3so4JY-desktop.webp",
"category": "image"
},
{
"id": "cmkqhr9lg000fvneai3q8qw0s",
"name": "V09ZxN1wOwbSFLQiDK0VQ-desktop.webp",
"realName": "buku6.jpg",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/V09ZxN1wOwbSFLQiDK0VQ-desktop.webp",
"category": "image"
},
{
"id": "cmkqi5knc000ivnea8grp7j06",
"name": "Wqp4AyVkGjqRMED9Q5XAs-desktop.webp",
"realName": "buku7.webp",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/Wqp4AyVkGjqRMED9Q5XAs-desktop.webp",
"category": "image"
},
{
"id": "cmkqi9799000lvneamskmvpq5",
"name": "NH4aLc7cVuutdQBCofTC0-desktop.webp",
"realName": "buku8.webp",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/NH4aLc7cVuutdQBCofTC0-desktop.webp",
"category": "image"
},
{
"id": "cmkqibjj2000ovnea3zmmvdop",
"name": "MLrsPrD6oiHsrNP4Lc8J7-desktop.webp",
"realName": "buku9.jpg",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/MLrsPrD6oiHsrNP4Lc8J7-desktop.webp",
"category": "image"
},
{
"id": "cmkqidn7e000rvnea5rl58f2e",
"name": "iaIeNdhuxqltqKP7aZncQ-desktop.webp",
"realName": "buku10.jpg",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/iaIeNdhuxqltqKP7aZncQ-desktop.webp",
"category": "image"
},
{
"id": "cmkqifdfs000uvneajss8zswp",
"name": "WUDssJ59pTKE_3IuTiZ2s-desktop.webp",
"realName": "buku11.jpg",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/WUDssJ59pTKE_3IuTiZ2s-desktop.webp",
"category": "image"
},
{
"id": "cmkqik7p5000xvnea6krii3vw",
"name": "RJH_-4_R_nlP7GVEQeD1M-desktop.webp",
"realName": "buku13.jpg",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/RJH_-4_R_nlP7GVEQeD1M-desktop.webp",
"category": "image"
},
{
"id": "cmkqinnih0010vneakpjb9egl",
"name": "9MA-Jx_36uoho2Tg40_G9-desktop.webp",
"realName": "buku14.jpg",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/9MA-Jx_36uoho2Tg40_G9-desktop.webp",
"category": "image"
},
{
"id": "cmkqiqeb60013vnea2ygrq5rs",
"name": "dkb7ZWFl28TREVcvH8sWd-desktop.webp",
"realName": "buku15.png",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/dkb7ZWFl28TREVcvH8sWd-desktop.webp",
"category": "image"
},
{
"id": "cmkqiur960016vnea3werdoey",
"name": "nVj3one6CLuWRd04QnsWo-desktop.webp",
"realName": "buku16.jpg",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/nVj3one6CLuWRd04QnsWo-desktop.webp",
"category": "image"
},
{
"id": "cmkqix2go0019vnea8coousvn",
"name": "AnB7JO4_6tlPTX3ypOVLi-desktop.webp",
"realName": "buku17.jpg",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/AnB7JO4_6tlPTX3ypOVLi-desktop.webp",
"category": "image"
},
{
"id": "cmkqiytnv001cvnea7o2sv1vt",
"name": "sAyoMERxL6JgFfiO22KPb-desktop.webp",
"realName": "buku18.jpg",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/sAyoMERxL6JgFfiO22KPb-desktop.webp",
"category": "image"
},
{
"id": "cmkqj0nn0001fvneaufur3nke",
"name": "WeA-JP2Ks_32fv1k529vj-desktop.webp",
"realName": "buku18.jpg",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/WeA-JP2Ks_32fv1k529vj-desktop.webp",
"category": "image"
},
{
"id": "cmkqj37rg001ivneam29fgayr",
"name": "pxlHu2kDmIprQqC2PuXaL-desktop.webp",
"realName": "buku19.jpg",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/pxlHu2kDmIprQqC2PuXaL-desktop.webp",
"category": "image"
},
{
"id": "cmkqj5ql6001lvnea6p0afr9f",
"name": "G0iELZb2DhQDCCP5OdzJR-desktop.webp",
"realName": "buku20.jpg",
"path": "uploads/images",
"mimeType": "image/webp",
"link": "/api/fileStorage/findUnique/G0iELZb2DhQDCCP5OdzJR-desktop.webp",
"category": "image"
}
]

View File

@@ -1,14 +1,14 @@
[
{
"id": "cmh48wo9c0006qq09txnxusql",
"id": "cmkp70zau0002vnu9o1jtpi1i",
"judul": "Keamanan Rumah",
"deskripsi": "<p><ul><li><p>Pastikan pintu dan jendela selalu terkunci saat meninggalkan rumah</p></li><li><p>Pasang lampu penerangan di halaman dan area sekitar rumah untuk mencegah tindak kejahatan.</p></li><li><p>Jangan mudah memberikan akses masuk ke orang yang tidak dikenal.</p></li></ul></p>",
"imageId": "cmkccs50d0000vn2mfuk0d9dw"
"imageId": "cmkp71pub0003vnu9ef60huuv"
},
{
"id": "cmh48wo9c1117rr10txnxusql",
"id": "cmkp71pzo0005vnu9p3n9646d",
"judul": "Keamanan Lingkungan Tanggungjawab Bersama",
"deskripsi": "<p>Pemerintah Desa Darmasaba melaksanakan sosialisasi dan pembinaan tentang keamanan dan ketertiban lingkungan kepada warga Perumahan Darmasaba Permai. Warga diajak berperan aktif dalam menjaga keamanan lingkungan serta mendukung penyediaan lampu penerangan jalan untuk mencegah tindak kriminal dan kecelakaan. Bhabinkamtibmas dan Babinsa turut memberikan materi keamanan dan ketertiban kepada warga, menekankan pentingnya partisipasi masyarakat dalam menjaga keamanan desa.</p>",
"imageId": "cmkccyh7t0003vn2mjdrqtuu0"
"imageId": "cmkp70z5g0000vnu9b0aieem8"
}
]

View File

@@ -0,0 +1,22 @@
[
{
"id": "cmkqmqbv30000vn84kf0ogf61",
"name": "TK",
"jumlah": "120"
},
{
"id": "cmkqmr20h0001vn84jxtuukfk",
"name": "SD",
"jumlah": "874"
},
{
"id": "cmkqmshcx0002vn84ufnz9mue",
"name": "SMP",
"jumlah": "50"
},
{
"id": "cmkqmsuoc0003vn84glk1d0rc",
"name": "SMA",
"jumlah": "862"
}
]

View File

@@ -0,0 +1,97 @@
[
{
"id": "cmghqwjs4000404l8c6vwd200",
"nama": "TK Widya Kumara",
"jenjangId": "cmghqwjs4000404l8c5uvc301"
},
{
"id": "cmghqwjs4000404l8c6vwd202",
"nama": "TK Widya Sari",
"jenjangId": "cmghqwjs4000404l8c5uvc301"
},
{
"id": "cmghqwjs4000404l8c6vwd203",
"nama": "TK Kuntala Dewi I",
"jenjangId": "cmghqwjs4000404l8c5uvc301"
},
{
"id": "cmghqwjs4000404l8c6vwd204",
"nama": "TK Widya Kumarayasa",
"jenjangId": "cmghqwjs4000404l8c5uvc301"
},
{
"id": "cmghqwjs4000404l8c6vwd205",
"nama": "TK Dewi Ganadwati",
"jenjangId": "cmghqwjs4000404l8c5uvc301"
},
{
"id": "cmghqwjs4000404l8c6vwd400",
"nama": "SD No. 1 Darmasaba",
"jenjangId": "cmghqwjs4000404l8c5uvc302"
},
{
"id": "cmghqwjs4000404l8c6vwd300",
"nama": "SD No. 2 Darmasaba",
"jenjangId": "cmghqwjs4000404l8c5uvc302"
},
{
"id": "cmghqwjs4000404l8c6vwd401",
"nama": "SD No. 3 Darmasaba",
"jenjangId": "cmghqwjs4000404l8c5uvc302"
},
{
"id": "cmghqwjs4000404l8c6vwd402",
"nama": "SD No. 4 Darmasaba",
"jenjangId": "cmghqwjs4000404l8c5uvc302"
},
{
"id": "cmghqwjs4000404l8c6vwd403",
"nama": "SD No. 5 Darmasaba",
"jenjangId": "cmghqwjs4000404l8c5uvc302"
},
{
"id": "cmghqwjs4000404l8c6vwd404",
"nama": "SD No. 6 Darmasaba",
"jenjangId": "cmghqwjs4000404l8c5uvc302"
},
{
"id": "cmghqwjs4000404l8c6vwd405",
"nama": "SD No. 7 Darmasaba",
"jenjangId": "cmghqwjs4000404l8c5uvc302"
},
{
"id": "cmghqwjs4000404l8c6vwd406",
"nama": "SMP Negeri 1 Abiansemal",
"jenjangId": "cmghqwjs4000404l8c5uvc303"
},
{
"id": "cmghqwjs4000404l8c6vwd407",
"nama": "SMP Negeri 2 Abiansemal",
"jenjangId": "cmghqwjs4000404l8c5uvc303"
},
{
"id": "cmghqwjs4000404l8c6vwd408",
"nama": "SMP Negeri 3 Abiansemal",
"jenjangId": "cmghqwjs4000404l8c5uvc303"
},
{
"id": "cmghqwjs4000404l8c6vwd409",
"nama": "SMP Negeri 4 Abiansemal",
"jenjangId": "cmghqwjs4000404l8c5uvc303"
},
{
"id": "cmghqwjs4000404l8c6vwd410",
"nama": "SMP Negeri 5 Abiansemal",
"jenjangId": "cmghqwjs4000404l8c5uvc303"
},
{
"id": "cmghqwjs4000404l8c6vwd411",
"nama": "SMA Negeri 1 Abiansemal",
"jenjangId": "cmghqwjs4000404l8c5uvc304"
},
{
"id": "cmghqwjs4000404l8c6vwd412",
"nama": "SMA Negeri 2 Abiansemal",
"jenjangId": "cmghqwjs4000404l8c5uvc304"
}
]

View File

@@ -0,0 +1,967 @@
[
{
"id": "dnkowzpeu000004l7exka3arm",
"nama": "I Kadek Ariyasa",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "dnkowzpeu000004l7exka3brm",
"nama": "Ni Luh Sinta Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "dnkowzpeu000004l7exka3crm",
"nama": "I Made Dharma Putra",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "dnkowzpeu000004l7exka3drm",
"nama": "Ni Kadek Ayu Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "dnkowzpeu000004l7exka3erm",
"nama": "I Komang Aditya",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "dnkowzpeu000004l7exka3frm",
"nama": "Ni Made Intan Sari",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "dnkowzpeu000004l7exka3grm",
"nama": "I Putu Bayu Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "dnkowzpeu000004l7exka3hrm",
"nama": "Ni Ketut Sri Wahyuni",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "dnkowzpeu000004l7exka3irm",
"nama": "I Nyoman Yoga Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "dnkowzpeu000004l7exka3jrm",
"nama": "Ni Komang Ratna Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "dnkox31m7000004lagpwk9z5r",
"nama": "I Made Satria",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "dnkox31m7000004lagpwk9z1r",
"nama": "Ni Luh Putri Ayu",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "dnkox31m7000004lagpwk9z2r",
"nama": "I Kadek Dwi Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "dnkox31m7000004lagpwk9z3r",
"nama": "Ni Made Rani Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "dnkox31m7000004lagpwk9z4r",
"nama": "I Komang Yuda Pramana",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "dnkox31m7000004lagpwk9z5r",
"nama": "Ni Kadek Ayu Purnami",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "dnkox31m7000004lagpwk9z6r",
"nama": "I Putu Ardi Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "dnkox31m7000004lagpwk9z7r",
"nama": "Ni Ketut Melati",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "dnkox31m7000004lagpwk9z8r",
"nama": "I Nyoman Agung",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "dnkox31m7000004lagpwk9z9r",
"nama": "Ni Komang Sari Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "dnkox64cu000104la7mge67yy",
"nama": "I Made Arya Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "dnkox64cu000104la7mge67zz",
"nama": "Ni Luh Putu Sari Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "dnkox64cu000104la7mge67aa",
"nama": "I Komang Dwi Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "dnkox64cu000104la7mge67bb",
"nama": "Ni Kadek Ayu Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "dnkox64cu000104la7mge67cc",
"nama": "I Putu Gede Mahendra",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "dnkox64cu000104la7mge67dd",
"nama": "Ni Made Cahya Utami",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "dnkox64cu000104la7mge67ee",
"nama": "I Nyoman Aditya Pranata",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "dnkox64cu000104la7mge67ff",
"nama": "Ni Komang Ratna Sari",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "dnkox64cu000104la7mge67gg",
"nama": "I Kadek Bima Prasetya",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "dnkox64cu000104la7mge67hh",
"nama": "Ni Putu Ayu Maharani",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "dnkox9520000204la1ans1pag",
"nama": "I Made Yoga Wirawan",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "dnkox9520000204la1ans1pbg",
"nama": "Ni Luh Desi Purnami",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "dnkox9520000204la1ans1pcg",
"nama": "I Komang Putra Santika",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "dnkox9520000204la1ans1pdg",
"nama": "Ni Kadek Intan Paramitha",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "dnkox9520000204la1ans1peg",
"nama": "I Putu Adi Wicaksana",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "dnkox9520000204la1ans1pfg",
"nama": "Ni Made Ayu Kirana",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "dnkox9520000204la1ans1phg",
"nama": "I Nyoman Bayu Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "dnkox9520000204la1ans1pih",
"nama": "Ni Komang Sri Laksmi",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "dnkox9520000204la1ans1pjh",
"nama": "I Kadek Rama Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "dnkox9520000204la1ans1pjk",
"nama": "Ni Putu Diah Anggraini",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "dnkox9520000204la1ans1pzg",
"nama": "I Made Krisna Mahardika",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "dnkox9520000204la1ans1pzh",
"nama": "Ni Luh Ayu Permata",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "dnkox9520000204la1ans1pzi",
"nama": "I Komang Yuda Pranata",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "dnkox9520000204la1ans1pzj",
"nama": "Ni Kadek Putri Anjani",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "dnkox9520000204la1ans1pzk",
"nama": "I Putu Surya Adi",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "dnkox9520000204la1ans1pzl",
"nama": "Ni Made Ayu Cahyani",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "dnkox9520000204la1ans1pzm",
"nama": "I Nyoman Artha Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "dnkox9520000204la1ans1pzn",
"nama": "Ni Komang Sinta Maharani",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "dnkox9520000204la1ans1pzo",
"nama": "I Kadek Gede Pranaya",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "dnkox9520000204la1ans1pzp",
"nama": "Ni Putu Ratih Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "dnkoxzl8u000704la0jla6y5a",
"nama": "I Made Arya Putra",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "dnkoxzl8u000704la0jla6y5b",
"nama": "I Nyoman Dwi Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "dnkoxzl8u000704la0jla6y5c",
"nama": "I Kadek Surya Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "dnkoxzl8u000704la0jla6y5d",
"nama": "I Komang Aditya Mahendra",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "dnkoxzl8u000704la0jla6y5e",
"nama": "Ni Luh Putri Ayu",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "dnkoxzl8u000704la0jla6y5f",
"nama": "Ni Made Intan Sari",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "dnkoxzl8u000704la0jla6y5g",
"nama": "I Gede Yoga Pramana",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "dnkoxzl8u000704la0jla6y5h",
"nama": "Ni Kadek Sri Wahyuni",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "dnkoxzl8u000704la0jla6y5i",
"nama": "I Putu Andika Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "dnkoxzl8u000704la0jla6y5j",
"nama": "Ni Komang Diah Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "dnkoy1mvk000804ladmmq5qq1",
"nama": "I Made Bima Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "dnkoy1mvk000804ladmmq5qq2",
"nama": "I Nyoman Rizky Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "dnkoy1mvk000804ladmmq5qq3",
"nama": "I Kadek Wahyu Nugraha",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "dnkoy1mvk000804ladmmq5qq4",
"nama": "I Komang Fajar Mahardika",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "dnkoy1mvk000804ladmmq5qq5",
"nama": "Ni Luh Sinta Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "dnkoy1mvk000804ladmmq5qq6",
"nama": "Ni Made Putu Maharani",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "dnkoy1mvk000804ladmmq5qq7",
"nama": "I Gede Arjuna Pranata",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "dnkoy1mvk000804ladmmq5qq8",
"nama": "Ni Kadek Ayu Puspita",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "dnkoy1mvk000804ladmmq5qq9",
"nama": "I Putu Danu Kresna",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "dnkoy1mvk000804ladmmq5qq0",
"nama": "Ni Komang Ratna Sari",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "dnkoy2m6j000904la2fbthtda",
"nama": "I Made Yoga Santika",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "dnkoy2m6j000904la2fbthtdb",
"nama": "I Nyoman Bayu Adnyana",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "dnkoy2m6j000904la2fbthtdc",
"nama": "I Kadek Rama Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "dnkoy2m6j000904la2fbthtdd",
"nama": "I Komang Agus Prabawa",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "dnkoy2m6j000904la2fbthtde",
"nama": "Ni Luh Ayu Citra Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "dnkoy2m6j000904la2fbthtdf",
"nama": "Ni Made Sari Indrayani",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "dnkoy2m6j000904la2fbthtdg",
"nama": "I Gede Mahesa Putra",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "dnkoy2m6j000904la2fbthtdh",
"nama": "Ni Kadek Purnami Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "dnkoy2m6j000904la2fbthtdi",
"nama": "I Putu Arta Gunawan",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "dnkoy2m6j000904la2fbthtdj",
"nama": "Ni Komang Indah Permata",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "dnkoy5cs5000a04la9jlcbpya",
"nama": "I Made Arya Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "dnkoy5cs5000a04la9jlcbpyb",
"nama": "I Nyoman Dika Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "dnkoy5cs5000a04la9jlcbpyc",
"nama": "I Kadek Putra Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "dnkoy5cs5000a04la9jlcbpyd",
"nama": "I Komang Agus Setiawan",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "dnkoy5cs5000a04la9jlcbpye",
"nama": "Ni Luh Putu Sari Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "dnkoy5cs5000a04la9jlcbpyf",
"nama": "Ni Kadek Ayu Puspita",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "dnkoy5cs5000a04la9jlcbpyg",
"nama": "I Putu Yoga Pramana",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "dnkoy5cs5000a04la9jlcbpyh",
"nama": "Ni Komang Dwi Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "dnkoy5cs5000a04la9jlcbpyi",
"nama": "I Made Bayu Kurniawan",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "dnkoy5cs5000a04la9jlcbpyj",
"nama": "Ni Putu Ayu Maharani",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "dnkoy6dtp000b04la1zlo60ua",
"nama": "I Made Dewa Putra",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "dnkoy6dtp000b04la1zlo60ub",
"nama": "I Nyoman Surya Adnyana",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "dnkoy6dtp000b04la1zlo60uc",
"nama": "I Kadek Bima Santosa",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "dnkoy6dtp000b04la1zlo60ud",
"nama": "I Komang Arta Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "dnkoy6dtp000b04la1zlo60ue",
"nama": "Ni Luh Made Pertiwi",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "dnkoy6dtp000b04la1zlo60uf",
"nama": "Ni Kadek Citra Laksmi",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "dnkoy6dtp000b04la1zlo60ug",
"nama": "I Putu Rangga Mahendra",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "dnkoy6dtp000b04la1zlo60uh",
"nama": "Ni Komang Rina Apriyani",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "dnkoy6dtp000b04la1zlo60ui",
"nama": "I Made Aditya Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "dnkoy6dtp000b04la1zlo60uj",
"nama": "Ni Putu Ayu Cahyaningrum",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "dnkoy76ux000c04lags2adcaa",
"nama": "I Made Krisna Mahardika",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "dnkoy76ux000c04lags2adcab",
"nama": "I Nyoman Gede Putrawan",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "dnkoy76ux000c04lags2adcac",
"nama": "I Kadek Yoga Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "dnkoy76ux000c04lags2adcad",
"nama": "I Komang Danu Prasetya",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "dnkoy76ux000c04lags2adcae",
"nama": "Ni Luh Ayu Sinta Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "dnkoy76ux000c04lags2adcaf",
"nama": "Ni Kadek Intan Maharani",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "dnkoy76ux000c04lags2adcag",
"nama": "I Putu Wira Gunawan",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "dnkoy76ux000c04lags2adcah",
"nama": "Ni Komang Ayu Ratnasari",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "dnkoy76ux000c04lags2adcai",
"nama": "I Made Fajar Nugraha",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "dnkoy76ux000c04lags2adcaj",
"nama": "Ni Putu Desi Purnami",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "dnkoy85nz000d04lahr5hepn1",
"nama": "I Made Arya Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "dnkoy85nz000d04lahr5hepn2",
"nama": "I Nyoman Surya Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "dnkoy85nz000d04lahr5hepn3",
"nama": "I Komang Aditya Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "dnkoy85nz000d04lahr5hepn4",
"nama": "I Putu Gede Pramana",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "dnkoy85nz000d04lahr5hepn5",
"nama": "Ni Luh Putri Ayu Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "dnkoy85nz000d04lahr5hepn6",
"nama": "Ni Kadek Sari Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "dnkoy85nz000d04lahr5hepn7",
"nama": "I Made Yoga Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "dnkoy85nz000d04lahr5hepn8",
"nama": "I Nyoman Wira Santika",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "dnkoy85nz000d04lahr5hepn9",
"nama": "Ni Komang Diah Purnami",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "dnkoy85nz000d04lahr5hepn0",
"nama": "I Putu Bayu Mahendra",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "dnkoy91wc000e04la966390na",
"nama": "I Made Dwi Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "dnkoy91wc000e04la966390nb",
"nama": "I Nyoman Agus Prasetya",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "dnkoy91wc000e04la966390nc",
"nama": "I Komang Yuda Pranata",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "dnkoy91wc000e04la966390nd",
"nama": "I Putu Gede Mahardika",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "dnkoy91wc000e04la966390ne",
"nama": "Ni Luh Desi Maharani",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "dnkoy91wc000e04la966390nf",
"nama": "Ni Kadek Ayu Prameswari",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "dnkoy91wc000e04la966390ng",
"nama": "I Made Rizky Ananta",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "dnkoy91wc000e04la966390nh",
"nama": "I Nyoman Dika Pramana",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "dnkoy91wc000e04la966390ni",
"nama": "Ni Komang Puspita Sari",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "dnkoy91wc000e04la966390nj",
"nama": "I Putu Andika Putra",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "dnkoy9zzy000f04la7rze3fi1",
"nama": "I Made Wahyu Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "dnkoy9zzy000f04la7rze3fi2",
"nama": "I Nyoman Kevin Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "dnkoy9zzy000f04la7rze3fi3",
"nama": "I Komang Arta Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "dnkoy9zzy000f04la7rze3fi4",
"nama": "I Putu Gede Satya Wibawa",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "dnkoy9zzy000f04la7rze3fi5",
"nama": "Ni Luh Ayu Citra Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "dnkoy9zzy000f04la7rze3fi6",
"nama": "Ni Kadek Putri Anggraini",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "dnkoy9zzy000f04la7rze3fi7",
"nama": "I Made Fajar Pranata",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "dnkoy9zzy000f04la7rze3fi8",
"nama": "I Nyoman Rama Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "dnkoy9zzy000f04la7rze3fi9",
"nama": "Ni Komang Sinta Maharani",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "dnkoy9zzy000f04la7rze3fi0",
"nama": "I Putu Dimas Pradipta",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "dnkoyapqt000g04laaob10wya",
"nama": "I Made Arya Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "dnkoyapqt000g04laaob10wyb",
"nama": "I Nyoman Adi Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "dnkoyapqt000g04laaob10wyc",
"nama": "I Wayan Putra Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "dnkoyapqt000g04laaob10wyd",
"nama": "Ni Kadek Sari Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "dnkoyapqt000g04laaob10wyf",
"nama": "I Komang Yoga Pramana",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "dnkoyapqt000g04laaob10wyg",
"nama": "Ni Luh Putu Anggreni",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "dnkoyapqt000g04laaob10wyh",
"nama": "I Made Dewa Mahendra",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "dnkoyapqt000g04laaob10wyi",
"nama": "Ni Putu Ayu Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "dnkoyapqt000g04laaob10wyj",
"nama": "I Nyoman Agus Santika",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "dnkoyapqt000g04laaob10wyk",
"nama": "Ni Komang Ratih Permata",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "dnkoybh2p000h04lahbds4wc1",
"nama": "I Wayan Surya Dharma",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "dnkoybh2p000h04lahbds4wc2",
"nama": "Ni Kadek Ayu Prameswari",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "dnkoybh2p000h04lahbds4wc3",
"nama": "I Made Gede Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "dnkoybh2p000h04lahbds4wc4",
"nama": "I Nyoman Krisna Putra",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "dnkoybh2p000h04lahbds4wc5",
"nama": "Ni Luh Desi Maharani",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "dnkoybh2p000h04lahbds4wc6",
"nama": "I Komang Bima Santosa",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "dnkoybh2p000h04lahbds4wc7",
"nama": "Ni Putu Cahya Utami",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "dnkoybh2p000h04lahbds4wc8",
"nama": "I Wayan Dimas Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "dnkoybh2p000h04lahbds4wc9",
"nama": "Ni Kadek Purnama Sari",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "dnkoybh2p000h04lahbds4wc0",
"nama": "I Made Yoga Kencana",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "dnkoyc6ij000i04la3r8i7f1a",
"nama": "I Nyoman Gede Sapta",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "dnkoyc6ij000i04la3r8i7f1b",
"nama": "Ni Luh Ayu Pertiwi",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "dnkoyc6ij000i04la3r8i7f1c",
"nama": "I Wayan Danu Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "dnkoyc6ij000i04la3r8i7f1d",
"nama": "Ni Kadek Melati Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "dnkoyc6ij000i04la3r8i7f1e",
"nama": "I Made Raka Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "dnkoyc6ij000i04la3r8i7f1f",
"nama": "Ni Komang Sinta Laksmi",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "dnkoyc6ij000i04la3r8i7f1g",
"nama": "I Nyoman Arta Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "dnkoyc6ij000i04la3r8i7f1h",
"nama": "Ni Putu Indah Permata",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "dnkoyc6ij000i04la3r8i7f1i",
"nama": "I Wayan Bagus Mahendra",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "dnkoyc6ij000i04la3r8i7f1j",
"nama": "Ni Kadek Ayu Wulandari",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "dnkoycyfl000j04la757zg9ba",
"nama": "I Made Arya Putra",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "dnkoycyfl000j04la757zg9bb",
"nama": "I Komang Adi Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "dnkoycyfl000j04la757zg9bc",
"nama": "I Nyoman Dewa Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "dnkoycyfl000j04la757zg9bd",
"nama": "I Ketut Agus Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "dnkoycyfl000j04la757zg9be",
"nama": "Ni Luh Putu Sari Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "dnkoycyfl000j04la757zg9bf",
"nama": "Ni Kadek Ayu Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "dnkoycyfl000j04la757zg9bg",
"nama": "I Made Surya Mahendra",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "dnkoycyfl000j04la757zg9bh",
"nama": "I Komang Yoga Pradipta",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "dnkoycyfl000j04la757zg9bi",
"nama": "Ni Putu Citra Wulandari",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "dnkoycyfl000j04la757zg9bj",
"nama": "I Nyoman Bayu Pramana",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "dnkoydnnl000k04lae6jvhbfa",
"nama": "I Made Gede Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
},
{
"id": "dnkoydnnl000k04lae6jvhbfb",
"nama": "I Komang Krisna Yudha",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
},
{
"id": "dnkoydnnl000k04lae6jvhbfc",
"nama": "I Nyoman Putra Santika",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
},
{
"id": "dnkoydnnl000k04lae6jvhbfd",
"nama": "I Ketut Wira Adnyana",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
},
{
"id": "dnkoydnnl000k04lae6jvhbfe",
"nama": "Ni Luh Kadek Maharani",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
},
{
"id": "dnkoydnnl000k04lae6jvhbff",
"nama": "Ni Made Ayu Purnami",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
},
{
"id": "dnkoydnnl000k04lae6jvhbfg",
"nama": "I Putu Yoga Mahardika",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
},
{
"id": "dnkoydnnl000k04lae6jvhbfh",
"nama": "I Komang Dimas Prasetya",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
},
{
"id": "dnkoydnnl000k04lae6jvhbfi",
"nama": "Ni Kadek Sinta Permata",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
},
{
"id": "dnkoydnnl000k04lae6jvhbfj",
"nama": "I Nyoman Arta Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
}
]

View File

@@ -0,0 +1,967 @@
[
{
"id": "cmkowzpeu000004l7exka3arm",
"nama": "I Kadek Ariyasa",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "cmkowzpeu000004l7exka3brm",
"nama": "Ni Luh Sinta Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "cmkowzpeu000004l7exka3crm",
"nama": "I Made Dharma Putra",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "cmkowzpeu000004l7exka3drm",
"nama": "Ni Kadek Ayu Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "cmkowzpeu000004l7exka3erm",
"nama": "I Komang Aditya",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "cmkowzpeu000004l7exka3frm",
"nama": "Ni Made Intan Sari",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "cmkowzpeu000004l7exka3grm",
"nama": "I Putu Bayu Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "cmkowzpeu000004l7exka3hrm",
"nama": "Ni Ketut Sri Wahyuni",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "cmkowzpeu000004l7exka3irm",
"nama": "I Nyoman Yoga Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "cmkowzpeu000004l7exka3jrm",
"nama": "Ni Komang Ratna Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd200"
},
{
"id": "cmkox31m7000004lagpwk9z5r",
"nama": "I Made Satria",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "cmkox31m7000004lagpwk9z1r",
"nama": "Ni Luh Putri Ayu",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "cmkox31m7000004lagpwk9z2r",
"nama": "I Kadek Dwi Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "cmkox31m7000004lagpwk9z3r",
"nama": "Ni Made Rani Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "cmkox31m7000004lagpwk9z4r",
"nama": "I Komang Yuda Pramana",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "cmkox31m7000004lagpwk9z5r",
"nama": "Ni Kadek Ayu Purnami",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "cmkox31m7000004lagpwk9z6r",
"nama": "I Putu Ardi Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "cmkox31m7000004lagpwk9z7r",
"nama": "Ni Ketut Melati",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "cmkox31m7000004lagpwk9z8r",
"nama": "I Nyoman Agung",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "cmkox31m7000004lagpwk9z9r",
"nama": "Ni Komang Sari Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd202"
},
{
"id": "cmkox64cu000104la7mge67yy",
"nama": "I Made Arya Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "cmkox64cu000104la7mge67zz",
"nama": "Ni Luh Putu Sari Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "cmkox64cu000104la7mge67aa",
"nama": "I Komang Dwi Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "cmkox64cu000104la7mge67bb",
"nama": "Ni Kadek Ayu Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "cmkox64cu000104la7mge67cc",
"nama": "I Putu Gede Mahendra",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "cmkox64cu000104la7mge67dd",
"nama": "Ni Made Cahya Utami",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "cmkox64cu000104la7mge67ee",
"nama": "I Nyoman Aditya Pranata",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "cmkox64cu000104la7mge67ff",
"nama": "Ni Komang Ratna Sari",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "cmkox64cu000104la7mge67gg",
"nama": "I Kadek Bima Prasetya",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "cmkox64cu000104la7mge67hh",
"nama": "Ni Putu Ayu Maharani",
"lembagaId": "cmghqwjs4000404l8c6vwd203"
},
{
"id": "cmkox9520000204la1ans1pag",
"nama": "I Made Yoga Wirawan",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "cmkox9520000204la1ans1pbg",
"nama": "Ni Luh Desi Purnami",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "cmkox9520000204la1ans1pcg",
"nama": "I Komang Putra Santika",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "cmkox9520000204la1ans1pdg",
"nama": "Ni Kadek Intan Paramitha",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "cmkox9520000204la1ans1peg",
"nama": "I Putu Adi Wicaksana",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "cmkox9520000204la1ans1pfg",
"nama": "Ni Made Ayu Kirana",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "cmkox9520000204la1ans1phg",
"nama": "I Nyoman Bayu Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "cmkox9520000204la1ans1pih",
"nama": "Ni Komang Sri Laksmi",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "cmkox9520000204la1ans1pjh",
"nama": "I Kadek Rama Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "cmkox9520000204la1ans1pjk",
"nama": "Ni Putu Diah Anggraini",
"lembagaId": "cmghqwjs4000404l8c6vwd204"
},
{
"id": "cmkox9520000204la1ans1pzg",
"nama": "I Made Krisna Mahardika",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "cmkox9520000204la1ans1pzh",
"nama": "Ni Luh Ayu Permata",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "cmkox9520000204la1ans1pzi",
"nama": "I Komang Yuda Pranata",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "cmkox9520000204la1ans1pzj",
"nama": "Ni Kadek Putri Anjani",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "cmkox9520000204la1ans1pzk",
"nama": "I Putu Surya Adi",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "cmkox9520000204la1ans1pzl",
"nama": "Ni Made Ayu Cahyani",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "cmkox9520000204la1ans1pzm",
"nama": "I Nyoman Artha Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "cmkox9520000204la1ans1pzn",
"nama": "Ni Komang Sinta Maharani",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "cmkox9520000204la1ans1pzo",
"nama": "I Kadek Gede Pranaya",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "cmkox9520000204la1ans1pzp",
"nama": "Ni Putu Ratih Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd205"
},
{
"id": "cmkoxzl8u000704la0jla6y5a",
"nama": "I Made Arya Putra",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "cmkoxzl8u000704la0jla6y5b",
"nama": "I Nyoman Dwi Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "cmkoxzl8u000704la0jla6y5c",
"nama": "I Kadek Surya Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "cmkoxzl8u000704la0jla6y5d",
"nama": "I Komang Aditya Mahendra",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "cmkoxzl8u000704la0jla6y5e",
"nama": "Ni Luh Putri Ayu",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "cmkoxzl8u000704la0jla6y5f",
"nama": "Ni Made Intan Sari",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "cmkoxzl8u000704la0jla6y5g",
"nama": "I Gede Yoga Pramana",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "cmkoxzl8u000704la0jla6y5h",
"nama": "Ni Kadek Sri Wahyuni",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "cmkoxzl8u000704la0jla6y5i",
"nama": "I Putu Andika Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "cmkoxzl8u000704la0jla6y5j",
"nama": "Ni Komang Diah Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd400"
},
{
"id": "cmkoy1mvk000804ladmmq5qq1",
"nama": "I Made Bima Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "cmkoy1mvk000804ladmmq5qq2",
"nama": "I Nyoman Rizky Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "cmkoy1mvk000804ladmmq5qq3",
"nama": "I Kadek Wahyu Nugraha",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "cmkoy1mvk000804ladmmq5qq4",
"nama": "I Komang Fajar Mahardika",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "cmkoy1mvk000804ladmmq5qq5",
"nama": "Ni Luh Sinta Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "cmkoy1mvk000804ladmmq5qq6",
"nama": "Ni Made Putu Maharani",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "cmkoy1mvk000804ladmmq5qq7",
"nama": "I Gede Arjuna Pranata",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "cmkoy1mvk000804ladmmq5qq8",
"nama": "Ni Kadek Ayu Puspita",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "cmkoy1mvk000804ladmmq5qq9",
"nama": "I Putu Danu Kresna",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "cmkoy1mvk000804ladmmq5qq0",
"nama": "Ni Komang Ratna Sari",
"lembagaId": "cmghqwjs4000404l8c6vwd300"
},
{
"id": "cmkoy2m6j000904la2fbthtda",
"nama": "I Made Yoga Santika",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "cmkoy2m6j000904la2fbthtdb",
"nama": "I Nyoman Bayu Adnyana",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "cmkoy2m6j000904la2fbthtdc",
"nama": "I Kadek Rama Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "cmkoy2m6j000904la2fbthtdd",
"nama": "I Komang Agus Prabawa",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "cmkoy2m6j000904la2fbthtde",
"nama": "Ni Luh Ayu Citra Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "cmkoy2m6j000904la2fbthtdf",
"nama": "Ni Made Sari Indrayani",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "cmkoy2m6j000904la2fbthtdg",
"nama": "I Gede Mahesa Putra",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "cmkoy2m6j000904la2fbthtdh",
"nama": "Ni Kadek Purnami Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "cmkoy2m6j000904la2fbthtdi",
"nama": "I Putu Arta Gunawan",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "cmkoy2m6j000904la2fbthtdj",
"nama": "Ni Komang Indah Permata",
"lembagaId": "cmghqwjs4000404l8c6vwd401"
},
{
"id": "cmkoy5cs5000a04la9jlcbpya",
"nama": "I Made Arya Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "cmkoy5cs5000a04la9jlcbpyb",
"nama": "I Nyoman Dika Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "cmkoy5cs5000a04la9jlcbpyc",
"nama": "I Kadek Putra Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "cmkoy5cs5000a04la9jlcbpyd",
"nama": "I Komang Agus Setiawan",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "cmkoy5cs5000a04la9jlcbpye",
"nama": "Ni Luh Putu Sari Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "cmkoy5cs5000a04la9jlcbpyf",
"nama": "Ni Kadek Ayu Puspita",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "cmkoy5cs5000a04la9jlcbpyg",
"nama": "I Putu Yoga Pramana",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "cmkoy5cs5000a04la9jlcbpyh",
"nama": "Ni Komang Dwi Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "cmkoy5cs5000a04la9jlcbpyi",
"nama": "I Made Bayu Kurniawan",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "cmkoy5cs5000a04la9jlcbpyj",
"nama": "Ni Putu Ayu Maharani",
"lembagaId": "cmghqwjs4000404l8c6vwd402"
},
{
"id": "cmkoy6dtp000b04la1zlo60ua",
"nama": "I Made Dewa Putra",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "cmkoy6dtp000b04la1zlo60ub",
"nama": "I Nyoman Surya Adnyana",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "cmkoy6dtp000b04la1zlo60uc",
"nama": "I Kadek Bima Santosa",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "cmkoy6dtp000b04la1zlo60ud",
"nama": "I Komang Arta Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "cmkoy6dtp000b04la1zlo60ue",
"nama": "Ni Luh Made Pertiwi",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "cmkoy6dtp000b04la1zlo60uf",
"nama": "Ni Kadek Citra Laksmi",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "cmkoy6dtp000b04la1zlo60ug",
"nama": "I Putu Rangga Mahendra",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "cmkoy6dtp000b04la1zlo60uh",
"nama": "Ni Komang Rina Apriyani",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "cmkoy6dtp000b04la1zlo60ui",
"nama": "I Made Aditya Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "cmkoy6dtp000b04la1zlo60uj",
"nama": "Ni Putu Ayu Cahyaningrum",
"lembagaId": "cmghqwjs4000404l8c6vwd403"
},
{
"id": "cmkoy76ux000c04lags2adcaa",
"nama": "I Made Krisna Mahardika",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "cmkoy76ux000c04lags2adcab",
"nama": "I Nyoman Gede Putrawan",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "cmkoy76ux000c04lags2adcac",
"nama": "I Kadek Yoga Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "cmkoy76ux000c04lags2adcad",
"nama": "I Komang Danu Prasetya",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "cmkoy76ux000c04lags2adcae",
"nama": "Ni Luh Ayu Sinta Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "cmkoy76ux000c04lags2adcaf",
"nama": "Ni Kadek Intan Maharani",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "cmkoy76ux000c04lags2adcag",
"nama": "I Putu Wira Gunawan",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "cmkoy76ux000c04lags2adcah",
"nama": "Ni Komang Ayu Ratnasari",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "cmkoy76ux000c04lags2adcai",
"nama": "I Made Fajar Nugraha",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "cmkoy76ux000c04lags2adcaj",
"nama": "Ni Putu Desi Purnami",
"lembagaId": "cmghqwjs4000404l8c6vwd404"
},
{
"id": "cmkoy85nz000d04lahr5hepn1",
"nama": "I Made Arya Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "cmkoy85nz000d04lahr5hepn2",
"nama": "I Nyoman Surya Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "cmkoy85nz000d04lahr5hepn3",
"nama": "I Komang Aditya Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "cmkoy85nz000d04lahr5hepn4",
"nama": "I Putu Gede Pramana",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "cmkoy85nz000d04lahr5hepn5",
"nama": "Ni Luh Putri Ayu Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "cmkoy85nz000d04lahr5hepn6",
"nama": "Ni Kadek Sari Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "cmkoy85nz000d04lahr5hepn7",
"nama": "I Made Yoga Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "cmkoy85nz000d04lahr5hepn8",
"nama": "I Nyoman Wira Santika",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "cmkoy85nz000d04lahr5hepn9",
"nama": "Ni Komang Diah Purnami",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "cmkoy85nz000d04lahr5hepn0",
"nama": "I Putu Bayu Mahendra",
"lembagaId": "cmghqwjs4000404l8c6vwd405"
},
{
"id": "cmkoy91wc000e04la966390na",
"nama": "I Made Dwi Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "cmkoy91wc000e04la966390nb",
"nama": "I Nyoman Agus Prasetya",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "cmkoy91wc000e04la966390nc",
"nama": "I Komang Yuda Pranata",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "cmkoy91wc000e04la966390nd",
"nama": "I Putu Gede Mahardika",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "cmkoy91wc000e04la966390ne",
"nama": "Ni Luh Desi Maharani",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "cmkoy91wc000e04la966390nf",
"nama": "Ni Kadek Ayu Prameswari",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "cmkoy91wc000e04la966390ng",
"nama": "I Made Rizky Ananta",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "cmkoy91wc000e04la966390nh",
"nama": "I Nyoman Dika Pramana",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "cmkoy91wc000e04la966390ni",
"nama": "Ni Komang Puspita Sari",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "cmkoy91wc000e04la966390nj",
"nama": "I Putu Andika Putra",
"lembagaId": "cmghqwjs4000404l8c6vwd406"
},
{
"id": "cmkoy9zzy000f04la7rze3fi1",
"nama": "I Made Wahyu Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "cmkoy9zzy000f04la7rze3fi2",
"nama": "I Nyoman Kevin Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "cmkoy9zzy000f04la7rze3fi3",
"nama": "I Komang Arta Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "cmkoy9zzy000f04la7rze3fi4",
"nama": "I Putu Gede Satya Wibawa",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "cmkoy9zzy000f04la7rze3fi5",
"nama": "Ni Luh Ayu Citra Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "cmkoy9zzy000f04la7rze3fi6",
"nama": "Ni Kadek Putri Anggraini",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "cmkoy9zzy000f04la7rze3fi7",
"nama": "I Made Fajar Pranata",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "cmkoy9zzy000f04la7rze3fi8",
"nama": "I Nyoman Rama Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "cmkoy9zzy000f04la7rze3fi9",
"nama": "Ni Komang Sinta Maharani",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "cmkoy9zzy000f04la7rze3fi0",
"nama": "I Putu Dimas Pradipta",
"lembagaId": "cmghqwjs4000404l8c6vwd407"
},
{
"id": "cmkoyapqt000g04laaob10wya",
"nama": "I Made Arya Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "cmkoyapqt000g04laaob10wyb",
"nama": "I Nyoman Adi Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "cmkoyapqt000g04laaob10wyc",
"nama": "I Wayan Putra Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "cmkoyapqt000g04laaob10wyd",
"nama": "Ni Kadek Sari Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "cmkoyapqt000g04laaob10wyf",
"nama": "I Komang Yoga Pramana",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "cmkoyapqt000g04laaob10wyg",
"nama": "Ni Luh Putu Anggreni",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "cmkoyapqt000g04laaob10wyh",
"nama": "I Made Dewa Mahendra",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "cmkoyapqt000g04laaob10wyi",
"nama": "Ni Putu Ayu Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "cmkoyapqt000g04laaob10wyj",
"nama": "I Nyoman Agus Santika",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "cmkoyapqt000g04laaob10wyk",
"nama": "Ni Komang Ratih Permata",
"lembagaId": "cmghqwjs4000404l8c6vwd408"
},
{
"id": "cmkoybh2p000h04lahbds4wc1",
"nama": "I Wayan Surya Dharma",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "cmkoybh2p000h04lahbds4wc2",
"nama": "Ni Kadek Ayu Prameswari",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "cmkoybh2p000h04lahbds4wc3",
"nama": "I Made Gede Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "cmkoybh2p000h04lahbds4wc4",
"nama": "I Nyoman Krisna Putra",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "cmkoybh2p000h04lahbds4wc5",
"nama": "Ni Luh Desi Maharani",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "cmkoybh2p000h04lahbds4wc6",
"nama": "I Komang Bima Santosa",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "cmkoybh2p000h04lahbds4wc7",
"nama": "Ni Putu Cahya Utami",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "cmkoybh2p000h04lahbds4wc8",
"nama": "I Wayan Dimas Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "cmkoybh2p000h04lahbds4wc9",
"nama": "Ni Kadek Purnama Sari",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "cmkoybh2p000h04lahbds4wc0",
"nama": "I Made Yoga Kencana",
"lembagaId": "cmghqwjs4000404l8c6vwd409"
},
{
"id": "cmkoyc6ij000i04la3r8i7f1a",
"nama": "I Nyoman Gede Sapta",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "cmkoyc6ij000i04la3r8i7f1b",
"nama": "Ni Luh Ayu Pertiwi",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "cmkoyc6ij000i04la3r8i7f1c",
"nama": "I Wayan Danu Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "cmkoyc6ij000i04la3r8i7f1d",
"nama": "Ni Kadek Melati Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "cmkoyc6ij000i04la3r8i7f1e",
"nama": "I Made Raka Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "cmkoyc6ij000i04la3r8i7f1f",
"nama": "Ni Komang Sinta Laksmi",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "cmkoyc6ij000i04la3r8i7f1g",
"nama": "I Nyoman Arta Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "cmkoyc6ij000i04la3r8i7f1h",
"nama": "Ni Putu Indah Permata",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "cmkoyc6ij000i04la3r8i7f1i",
"nama": "I Wayan Bagus Mahendra",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "cmkoyc6ij000i04la3r8i7f1j",
"nama": "Ni Kadek Ayu Wulandari",
"lembagaId": "cmghqwjs4000404l8c6vwd410"
},
{
"id": "cmkoycyfl000j04la757zg9ba",
"nama": "I Made Arya Putra",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "cmkoycyfl000j04la757zg9bb",
"nama": "I Komang Adi Saputra",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "cmkoycyfl000j04la757zg9bc",
"nama": "I Nyoman Dewa Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "cmkoycyfl000j04la757zg9bd",
"nama": "I Ketut Agus Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "cmkoycyfl000j04la757zg9be",
"nama": "Ni Luh Putu Sari Dewi",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "cmkoycyfl000j04la757zg9bf",
"nama": "Ni Kadek Ayu Lestari",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "cmkoycyfl000j04la757zg9bg",
"nama": "I Made Surya Mahendra",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "cmkoycyfl000j04la757zg9bh",
"nama": "I Komang Yoga Pradipta",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "cmkoycyfl000j04la757zg9bi",
"nama": "Ni Putu Citra Wulandari",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "cmkoycyfl000j04la757zg9bj",
"nama": "I Nyoman Bayu Pramana",
"lembagaId": "cmghqwjs4000404l8c6vwd411"
},
{
"id": "cmkoydnnl000k04lae6jvhbfa",
"nama": "I Made Gede Pratama",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
},
{
"id": "cmkoydnnl000k04lae6jvhbfb",
"nama": "I Komang Krisna Yudha",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
},
{
"id": "cmkoydnnl000k04lae6jvhbfc",
"nama": "I Nyoman Putra Santika",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
},
{
"id": "cmkoydnnl000k04lae6jvhbfd",
"nama": "I Ketut Wira Adnyana",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
},
{
"id": "cmkoydnnl000k04lae6jvhbfe",
"nama": "Ni Luh Kadek Maharani",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
},
{
"id": "cmkoydnnl000k04lae6jvhbff",
"nama": "Ni Made Ayu Purnami",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
},
{
"id": "cmkoydnnl000k04lae6jvhbfg",
"nama": "I Putu Yoga Mahardika",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
},
{
"id": "cmkoydnnl000k04lae6jvhbfh",
"nama": "I Komang Dimas Prasetya",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
},
{
"id": "cmkoydnnl000k04lae6jvhbfi",
"nama": "Ni Kadek Sinta Permata",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
},
{
"id": "cmkoydnnl000k04lae6jvhbfj",
"nama": "I Nyoman Arta Wijaya",
"lembagaId": "cmghqwjs4000404l8c6vwd412"
}
]

View File

@@ -0,0 +1,47 @@
[
{
"id": "cmkqb11mc000104jibq76bdzu",
"name": "Fiksi"
},
{
"id": "cmkqb11mc000104jibq87bdzu",
"name": "Non Fiksi"
},
{
"id": "cmkqb11mc000104jibq97bdzu",
"name": "Pendidikan"
},
{
"id": "cmkqb11mc000104jibqa7bdzu",
"name": "Ilmiah"
},
{
"id": "cmkqb11mc000104jibqb7bdzu",
"name": "Drama"
},
{
"id": "cmkqb11mc000104jibqc7bdzu",
"name": "Sejarah"
},
{
"id": "cmkqb11mc000104jibqd7bdzu",
"name": "Teknologi"
},
{
"id": "cmkqb11mc000104jibqe7bdzu",
"name": "Agama"
},
{
"id": "cmkqb11mc000104jibqf7bdzu",
"name": "Pengembangan Diri"
},
{
"id": "cmkqb11mc000104jibqg7bdzu",
"name": "Kesehatan"
},
{
"id": "cmkqb11mc000104jibqh7bdzu",
"name": "Anak Dan Remaja"
}
]

View File

@@ -0,0 +1,142 @@
[
{
"id": "cmkqhbi6f0002vneao4my49k9",
"judul": "Laskar Pelangi",
"deskripsi": "<p>Novel inspiratif tentang perjuangan anak-anak di Belitung dalam meraih pendidikan dan mimpi mereka</p>",
"kategoriId": "cmkqb11mc000104jibq76bdzu",
"imageId": "cmkqhbhxi0000vneamj3din9u"
},
{
"id": "cmkqhedff0005vneas3rtbumi",
"judul": "Bumi Manusia",
"deskripsi": "<p>Kisah kehidupan Minke di masa kolonial yang menggambarkan perjuangan, pendidikan, dan identitas bangsa</p>",
"kategoriId": "cmkqb11mc000104jibqc7bdzu",
"imageId": "cmkqhed8x0003vneakx0c7me2"
},
{
"id": "cmkqhg1g70008vneajbpz8phh",
"judul": "Atomic Habits",
"deskripsi": "<p>Panduan membangun kebiasaan kecil yang konsisten untuk menghasilkan perubahan besar dalam hidup</p>",
"kategoriId": "cmkqb11mc000104jibqf7bdzu",
"imageId": "cmkqhg1cb0006vneagsxa6t4t"
},
{
"id": "cmkqhl6sr000bvneampx0svus",
"judul": "Clean Code",
"deskripsi": "<p>Buku wajib programmer tentang cara menulis kode yang bersih, mudah dibaca, dan mudah dirawat</p>",
"kategoriId": "cmkqb11mc000104jibqd7bdzu",
"imageId": "cmkqhl6mv0009vneasgix42ud"
},
{
"id": "cmkqhoaa1000evnearppgpyxo",
"judul": "Sejarah Indonesia Modern",
"deskripsi": "<p>Membahas perjalanan sejarah Indonesia dari masa kolonial hingga era modern</p>",
"kategoriId": "cmkqb11mc000104jibqc7bdzu",
"imageId": "cmkqhoa5w000cvneah15n28zq"
},
{
"id": "cmkqhr9oc000hvnea677ad3kb",
"judul": "Ensiklopedia Anak Pintar",
"deskripsi": "<p>Buku referensi bergambar yang membantu anak mengenal ilmu pengetahuan secara menyenangkan</p>",
"kategoriId": "cmkqb11mc000104jibqh7bdzu",
"imageId": "cmkqhr9lg000fvneai3q8qw0s"
},
{
"id": "cmkqi5ksf000kvnea9c04n2hy",
"judul": "Filosofi Teras",
"deskripsi": "<p>Pengenalan filsafat Stoikisme untuk menghadapi kehidupan modern dengan lebih tenang</p>",
"kategoriId": "cmkqb11mc000104jibq87bdzu",
"imageId": "cmkqi5knc000ivnea8grp7j06"
},
{
"id": "cmkqi97hq000nvneaparjbcrm",
"judul": "Pemrograman JavaScript Dasar",
"deskripsi": "<p>Panduan dasar belajar JavaScript untuk pemula dalam dunia pengembangan web</p>",
"kategoriId": "cmkqb11mc000104jibqd7bdzu",
"imageId": "cmkqi9799000lvneamskmvpq5"
},
{
"id": "cmkqibjt9000qvnea13ox7fmv",
"judul": "Pendidikan Karakter",
"deskripsi": "<p>Buku yang membahas pentingnya pendidikan karakter dalam membentuk generasi bangsa</p>",
"kategoriId": "cmkqb11mc000104jibqf7bdzu",
"imageId": "cmkqibjj2000ovnea3zmmvdop"
},
{
"id": "cmkqidnar000tvneaohk5v8k6",
"judul": "Psikologi Kepribadian",
"deskripsi": "<p>Mengenal teori-teori kepribadian manusia dalam perspektif psikologi</p>",
"kategoriId": "cmkqb11mc000104jibq87bdzu",
"imageId": "cmkqidn7e000rvnea5rl58f2e"
},
{
"id": "cmkqifdiu000wvnea7xd0yi4f",
"judul": "Ayat-Ayat Cinta",
"deskripsi": "<p>Novel religi yang mengangkat kisah cinta, iman, dan perjuangan hidup</p>",
"kategoriId": "cmkqb11mc000104jibqe7bdzu",
"imageId": "cmkqifdfs000uvneajss8zswp"
},
{
"id": "cmkqik7vi000zvneae7d5cq9i",
"judul": "Negeri 5 Menara",
"deskripsi": "<p>Cerita persahabatan dan perjuangan santri dalam mengejar mimpi hingga ke mancanegara</p>",
"kategoriId": "cmkqb11mc000104jibq76bdzu",
"imageId": "cmkqik7p5000xvnea6krii3vw"
},
{
"id": "cmkqinno30012vneac1sgsvis",
"judul": "Belajar UI/UX Design",
"deskripsi": "<p>Panduan praktis memahami desain antarmuka dan pengalaman pengguna</p>",
"kategoriId": "cmkqb11mc000104jibqd7bdzu",
"imageId": "cmkqinnih0010vneakpjb9egl"
},
{
"id": "cmkqiqegd0015vneawv5u5tpm",
"judul": "Manajemen Waktu Efektif",
"deskripsi": "<p>Teknik mengatur waktu agar lebih produktif dan fokus pada hal penting</p>",
"kategoriId": "cmkqb11mc000104jibqf7bdzu",
"imageId": "cmkqiqeb60013vnea2ygrq5rs"
},
{
"id": "cmkqiurc60018vneavyd3pj9q",
"judul": "Dongeng Nusantara",
"deskripsi": "<p>Kumpulan dongeng tradisional Indonesia yang sarat pesan moral</p>",
"kategoriId": "cmkqb11mc000104jibq76bdzu",
"imageId": "cmkqiur960016vnea3werdoey"
},
{
"id": "cmkqix2kb001bvnea5v81cw7p",
"judul": "Ekonomi Makro",
"deskripsi": "<p>Pembahasan konsep ekonomi makro secara sistematis dan mudah dipahami</p>",
"kategoriId": "cmkqb11mc000104jibq87bdzu",
"imageId": "cmkqix2go0019vnea8coousvn"
},
{
"id": "cmkqiyts2001evneahnk45ry5",
"judul": "Seni Berpikir Kritis",
"deskripsi": "<p>Buku yang membantu pembaca menghindari kesalahan berpikir dalam pengambilan keputusan</p>",
"kategoriId": "cmkqb11mc000104jibq87bdzu",
"imageId": "cmkqiytnv001cvnea7o2sv1vt"
},
{
"id": "cmkqj0nq0001hvnea06r8m3kj",
"judul": "Seni Berpikir Kritis",
"deskripsi": "<p>Buku yang membantu pembaca menghindari kesalahan berpikir dalam pengambilan keputusan</p>",
"kategoriId": "cmkqb11mc000104jibq87bdzu",
"imageId": "cmkqj0nn0001fvneaufur3nke"
},
{
"id": "cmkqj37w4001kvnea04n9w2bx",
"judul": "Panduan Shalat Lengkap",
"deskripsi": "<p>Panduan praktis dan lengkap tentang tata cara shalat sesuai tuntunan</p>",
"kategoriId": "cmkqb11mc000104jibqe7bdzu",
"imageId": "cmkqj37rg001ivneam29fgayr"
},
{
"id": "cmkqj5qp6001nvnea4xhvluz3",
"judul": "Cerita Sains untuk Anak",
"deskripsi": "<p>Cerita edukatif yang mengenalkan sains kepada anak dengan bahasa sederhana</p>",
"kategoriId": "cmkqb11mc000104jibqh7bdzu",
"imageId": "cmkqj5ql6001lvnea6p0afr9f"
}
]

View File

@@ -0,0 +1,84 @@
-- DropForeignKey
ALTER TABLE "Berita" DROP CONSTRAINT "Berita_imageId_fkey";
-- DropForeignKey
ALTER TABLE "InfoWabahPenyakit" DROP CONSTRAINT "InfoWabahPenyakit_imageId_fkey";
-- DropForeignKey
ALTER TABLE "KontakDarurat" DROP CONSTRAINT "KontakDarurat_imageId_fkey";
-- DropForeignKey
ALTER TABLE "PenangananDarurat" DROP CONSTRAINT "PenangananDarurat_imageId_fkey";
-- DropForeignKey
ALTER TABLE "Posyandu" DROP CONSTRAINT "Posyandu_imageId_fkey";
-- DropForeignKey
ALTER TABLE "ProgramKesehatan" DROP CONSTRAINT "ProgramKesehatan_imageId_fkey";
-- DropForeignKey
ALTER TABLE "Puskesmas" DROP CONSTRAINT "Puskesmas_imageId_fkey";
-- AlterTable
ALTER TABLE "Berita" ALTER COLUMN "imageId" DROP NOT NULL;
-- AlterTable
ALTER TABLE "InfoWabahPenyakit" ALTER COLUMN "imageId" DROP NOT NULL;
-- AlterTable
ALTER TABLE "KontakDarurat" ALTER COLUMN "imageId" DROP NOT NULL;
-- AlterTable
ALTER TABLE "PasarDesa" ADD COLUMN "deskripsi" TEXT;
-- AlterTable
ALTER TABLE "PenangananDarurat" ALTER COLUMN "imageId" DROP NOT NULL;
-- AlterTable
ALTER TABLE "Posyandu" ALTER COLUMN "imageId" DROP NOT NULL;
-- AlterTable
ALTER TABLE "ProgramKesehatan" ALTER COLUMN "imageId" DROP NOT NULL;
-- AlterTable
ALTER TABLE "Puskesmas" ALTER COLUMN "imageId" DROP NOT NULL;
-- CreateTable
CREATE TABLE "LayananToPolsek" (
"id" TEXT NOT NULL,
"layananId" TEXT NOT NULL,
"polsekTerdekatId" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
"deletedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"isActive" BOOLEAN NOT NULL DEFAULT true,
CONSTRAINT "LayananToPolsek_pkey" PRIMARY KEY ("id")
);
-- AddForeignKey
ALTER TABLE "Berita" ADD CONSTRAINT "Berita_imageId_fkey" FOREIGN KEY ("imageId") REFERENCES "FileStorage"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Posyandu" ADD CONSTRAINT "Posyandu_imageId_fkey" FOREIGN KEY ("imageId") REFERENCES "FileStorage"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Puskesmas" ADD CONSTRAINT "Puskesmas_imageId_fkey" FOREIGN KEY ("imageId") REFERENCES "FileStorage"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "ProgramKesehatan" ADD CONSTRAINT "ProgramKesehatan_imageId_fkey" FOREIGN KEY ("imageId") REFERENCES "FileStorage"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "PenangananDarurat" ADD CONSTRAINT "PenangananDarurat_imageId_fkey" FOREIGN KEY ("imageId") REFERENCES "FileStorage"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "KontakDarurat" ADD CONSTRAINT "KontakDarurat_imageId_fkey" FOREIGN KEY ("imageId") REFERENCES "FileStorage"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "InfoWabahPenyakit" ADD CONSTRAINT "InfoWabahPenyakit_imageId_fkey" FOREIGN KEY ("imageId") REFERENCES "FileStorage"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "LayananToPolsek" ADD CONSTRAINT "LayananToPolsek_layananId_fkey" FOREIGN KEY ("layananId") REFERENCES "LayananPolsek"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "LayananToPolsek" ADD CONSTRAINT "LayananToPolsek_polsekTerdekatId_fkey" FOREIGN KEY ("polsekTerdekatId") REFERENCES "PolsekTerdekat"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

View File

@@ -1655,17 +1655,17 @@ model Pembiayaan {
// ========================================= MENU INOVASI ========================================= //
// ========================================= DESA DIGITAL / SMART VILLAGE ========================================= //
model DesaDigital {
id String @id @default(cuid())
name String
deskripsi String @db.Text
image FileStorage @relation(fields: [imageId], references: [id])
imageId String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime @default(now())
isActive Boolean @default(true)
}
model DesaDigital {
id String @id @default(cuid())
name String
deskripsi String @db.Text
image FileStorage @relation(fields: [imageId], references: [id])
imageId String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime @default(now())
isActive Boolean @default(true)
}
// ========================================= PROGRAM KREATIF ========================================= //
model ProgramKreatif {
@@ -1719,19 +1719,19 @@ model InfoTekno {
}
// ========================================= AJUKAN IDE INOVATIF ========================================= //
model AjukanIdeInovatif {
id String @id @default(cuid())
name String
alamat String
namaIde String
deskripsi String @db.Text
masalah String @db.Text
benefit String @db.Text
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime @default(now())
isActive Boolean @default(true)
}
model AjukanIdeInovatif {
id String @id @default(cuid())
name String
alamat String
namaIde String
deskripsi String @db.Text
masalah String @db.Text
benefit String @db.Text
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime @default(now())
isActive Boolean @default(true)
}
// ========================================= LAYANAN ONLINE DESA ========================================= //
model AdministrasiOnline {
@@ -1934,7 +1934,7 @@ model NilaiKonservasiAdat {
// ========================================= INFO SEKOLAH & PAUD ========================================= //
model JenjangPendidikan {
id String @id @default(cuid())
nama String // TK/PAUD, SD, SMP, SMA/SMK
nama String // TK/PAUD, SD, SMP, SMA/SMK
lembagas Lembaga[] // Relasi ke lembaga
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@ -2179,6 +2179,18 @@ enum StatusPeminjaman {
Dibatalkan
}
// ========================================= DATA PENDIDIKAN ========================================= //
model DataPendidikan {
id String @id @default(cuid())
name String
jumlah String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime @default(now())
isActive Boolean @default(true)
}
// ========================================= USER ========================================= //
model User {
@@ -2249,14 +2261,3 @@ model UserMenuAccess {
@@unique([userId, menuId]) // Satu user tidak bisa punya akses menu yang sama dua kali
}
// ========================================= DATA PENDIDIKAN ========================================= //
model DataPendidikan {
id String @id @default(cuid())
name String
jumlah String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime @default(now())
isActive Boolean @default(true)
}

View File

@@ -77,20 +77,25 @@ import mitraKolaborasi from "./data/inovasi/kolaborasi-inovasi/mitra-kolaborasi.
import infoTeknologi from "./data/inovasi/info-teknologi/info-teknologi.json";
import ajukanIde from "./data/inovasi/ajukan-ide/ajukan-ide.json";
import pengelolaanSampah from "./data/lingkungan/pengelolaan-sampah/pengelolaan-sampah.json";
import keteranganBankSampah from "./data/lingkungan/pengelolaan-sampah/keterangan-bank-sampah.json"
import programPenghijauan from "./data/lingkungan/program-penghijauan/program-penghijauan.json"
import keteranganBankSampah from "./data/lingkungan/pengelolaan-sampah/keterangan-bank-sampah.json";
import programPenghijauan from "./data/lingkungan/program-penghijauan/program-penghijauan.json";
import dataLingkunganDesa from "./data/lingkungan/data-lingkungan-desa/data-lingkungan-desa.json";
import kategoriGotongRoyong from "./data/lingkungan/gotong-royong/kategori-gotong-royong.json";
import gotongRoyong from "./data/lingkungan/gotong-royong/gotong-royong.json"
import gotongRoyong from "./data/lingkungan/gotong-royong/gotong-royong.json";
import berita from "./data/desa/berita/berita.json";
import kategoriBerita from "./data/desa/berita/kategori-berita.json";
import contohEdukasiLingkungan from "./data/lingkungan/edukasi-lingkungan/contoh-kegiatan-di-desa-darmasaba.json";
import materiEdukasiLingkungan from "./data/lingkungan/edukasi-lingkungan/materi-edukasi-yang-diberikan.json";
import tujuanEdukasiLingkungan from "./data/lingkungan/edukasi-lingkungan/tujuan-edukasi-lingkungan.json";
import bentukKonservasiBerdasarkanAdat from "./data/lingkungan/konservasi-adat-bali/bentuk-konservasi.json";
import kategoriKegiatanData from "./data/lingkungan/gotong-royong/kategori-gotong-royong.json";
import filosofiTriHita from "./data/lingkungan/konservasi-adat-bali/filosofi-tri-hita.json";
import nilaiKonservasiAdat from "./data/lingkungan/konservasi-adat-bali/nilai-konservasi-adat.json";
import jenjangPendidikan from "./data/pendidikan/info-sekolah/jenjang-pendidikan.json";
import lembagaPendidikan from "./data/pendidikan/info-sekolah/lembaga.json";
import siswa from "./data/pendidikan/info-sekolah/siswa.json";
import pengajar from "./data/pendidikan/info-sekolah/pengajar.json";
import dataPerpustakaan from "./data/pendidikan/perpustakaan-digital/perpustakaan-digital.json";
import dataPendidikan from "./data/pendidikan/data-pendidikan/data-pendidikan.json"
import caraMemperolehInformasi from "./data/list-caraMemperolehInformasi.json";
import caraMemperolehSalinanInformasi from "./data/list-caraMemperolehSalinanInformasi.json";
import jenisInformasiDiminta from "./data/list-jenisInfromasi.json";
@@ -104,15 +109,12 @@ import tempatKegiatan from "./data/pendidikan/pendidikan-non-formal/tempat-kegia
import tujuanProgram2 from "./data/pendidikan/pendidikan-non-formal/tujuan-program2.json";
import programUnggulan from "./data/pendidikan/program-pendidikan-anak/program-unggulan.json";
import tujuanProgram from "./data/pendidikan/program-pendidikan-anak/tujuan-program.json";
import kategoriBuku from "./data/pendidikan/perpustakaan-digital/kategori-buku.json";
import roles from "./data/user/roles.json";
import fileStorage from "./data/file-storage.json";
import jenjangPendidikan from "./data/pendidikan/info-sekolah/jenjang-pendidikan.json";
import seedAssets from "./seed_assets";
import users from "./data/user/users.json";
import { safeSeedUnique } from "./safeseedUnique";
import safeImageId from "./data/safeImageId";
import resolveImageIdForSeed from "./data/resolveImageId";
import resolveImageByName from "./resolveImageByName";
import resolveImageById from "./resolveImageByName";
(async () => {
@@ -1903,7 +1905,6 @@ import resolveImageById from "./resolveImageByName";
imageId: t.imageId,
},
create: {
id: t.id,
judul: t.judul,
deskripsi: t.deskripsi,
imageId: t.imageId,
@@ -2163,40 +2164,46 @@ import resolveImageById from "./resolveImageByName";
console.log("✅ Jumlah Penduduk Miskin seeded successfully");
// ==================== SUBMENU PROGRAM KEMISKINAN =============
for (const k of statistikKemiskinan) {
for (const s of statistikKemiskinan) {
await prisma.statistikKemiskinan.upsert({
where: {
tahun: k.tahun,
},
where: { tahun: s.tahun }, // ✅ FIX
update: {
jumlah: k.jumlah,
jumlah: s.jumlah,
},
create: {
tahun: k.tahun,
jumlah: k.jumlah,
id: s.id, // id boleh tetap
tahun: s.tahun,
jumlah: s.jumlah,
},
});
}
console.log("📊 Statistik Kemiskinan seeded successfully");
console.log("🔄 Seeding Program Kemiskinan...");
for (const k of programKemiskinan) {
await prisma.programKemiskinan.upsert({
where: {
id: k.id,
},
where: { id: k.id },
update: {
nama: k.nama,
deskripsi: k.deskripsi,
icon: k.icon,
statistikId: k.statistikId,
statistik: {
connect: {
tahun: k.tahun, // 👈 BUKAN ID
},
},
},
create: {
id: k.id,
nama: k.nama,
deskripsi: k.deskripsi,
icon: k.icon,
statistikId: k.statistikId,
statistik: {
connect: {
tahun: k.tahun,
},
},
},
});
}
@@ -2490,12 +2497,12 @@ import resolveImageById from "./resolveImageByName";
},
update: {
name: p.name,
icon: p.icon
icon: p.icon,
},
create: {
id: p.id,
name: p.name,
icon: p.icon
icon: p.icon,
},
});
}
@@ -2513,7 +2520,7 @@ import resolveImageById from "./resolveImageByName";
namaTempatMaps: p.namaTempatMaps,
linkPetunjukArah: p.linkPetunjukArah,
lat: p.lat,
lng: p.lng
lng: p.lng,
},
create: {
id: p.id,
@@ -2522,7 +2529,7 @@ import resolveImageById from "./resolveImageByName";
namaTempatMaps: p.namaTempatMaps,
linkPetunjukArah: p.linkPetunjukArah,
lat: p.lat,
lng: p.lng
lng: p.lng,
},
});
}
@@ -2539,14 +2546,14 @@ import resolveImageById from "./resolveImageByName";
name: p.name,
judul: p.judul,
deskripsi: p.deskripsi,
icon: p.icon
icon: p.icon,
},
create: {
id: p.id,
name: p.name,
judul: p.judul,
deskripsi: p.deskripsi,
icon: p.icon
icon: p.icon,
},
});
}
@@ -2563,14 +2570,14 @@ import resolveImageById from "./resolveImageByName";
name: p.name,
jumlah: p.jumlah,
deskripsi: p.deskripsi,
icon: p.icon
icon: p.icon,
},
create: {
id: p.id,
name: p.name,
jumlah: p.jumlah,
deskripsi: p.deskripsi,
icon: p.icon
icon: p.icon,
},
});
}
@@ -2629,9 +2636,8 @@ import resolveImageById from "./resolveImageByName";
console.log("✅ Kategori Gotong Royong seeded successfully");
// =========== SUBMENU EDUKASI LINGKUNGAN ===========
for (const e of tujuanEdukasiLingkungan) {
await prisma.tujuanEdukasiLingkungan.upsert({
where: {
@@ -2689,6 +2695,8 @@ import resolveImageById from "./resolveImageByName";
console.log("contoh edukasi lingkungan success ...");
// =========== SUBMENU KONSERVASI ADAT BALI ===========
for (const f of filosofiTriHita) {
await prisma.filosofiTriHita.upsert({
where: {
@@ -2746,6 +2754,85 @@ import resolveImageById from "./resolveImageByName";
console.log("nilai konservasi adat success ...");
// ====================== MENU PENDIDIKAN ==========================
// =========== SUBMENU INFO SEKOLAH =====================
for (const j of jenjangPendidikan) {
await prisma.jenjangPendidikan.upsert({
where: {
id: j.id,
},
update: {
nama: j.nama,
},
create: {
id: j.id,
nama: j.nama,
},
});
}
console.log("✅ Jenjang Pendidikan seeded successfully");
for (const j of lembagaPendidikan) {
await prisma.lembaga.upsert({
where: {
id: j.id,
},
update: {
nama: j.nama,
jenjangId: j.jenjangId,
},
create: {
id: j.id,
nama: j.nama,
jenjangId: j.jenjangId,
},
});
}
console.log("✅ Lembaga Pendidikan seeded successfully");
for (const j of siswa) {
await prisma.siswa.upsert({
where: {
id: j.id,
},
update: {
nama: j.nama,
lembagaId: j.lembagaId,
},
create: {
id: j.id,
nama: j.nama,
lembagaId: j.lembagaId,
},
});
}
console.log("✅ siswa seeded successfully");
for (const j of pengajar) {
await prisma.pengajar.upsert({
where: {
id: j.id,
},
update: {
nama: j.nama,
lembagaId: j.lembagaId,
},
create: {
id: j.id,
nama: j.nama,
lembagaId: j.lembagaId,
},
});
}
console.log("✅ pengajar seeded successfully");
// =========== SUBMENU PROGRAM PENDIDIKAN ANAK =====================
for (const t of tujuanProgram) {
await prisma.tujuanProgram.upsert({
where: { id: t.id },
@@ -2778,6 +2865,8 @@ import resolveImageById from "./resolveImageByName";
}
console.log("✅ program unggulan seeded (editable later via UI)");
// =========== SUBMENU BIMBINGAN BELAJAR DESA =====================
for (const t of tujuanBimbinganBelajarDesa) {
await prisma.tujuanBimbinganBelajarDesa.upsert({
where: { id: t.id },
@@ -2832,6 +2921,8 @@ import resolveImageById from "./resolveImageByName";
"✅ fasilitas bimbingan belajar desa seeded (editable later via UI)",
);
// =========== SUBMENU PENDIDIKAN NON FORMAL =====================
for (const t of tujuanProgram2) {
await prisma.tujuanPendidikanNonFormal.upsert({
where: { id: t.id },
@@ -2886,21 +2977,67 @@ import resolveImageById from "./resolveImageByName";
"✅ fasilitas bimbingan belajar desa seeded (editable later via UI)",
);
for (const j of jenjangPendidikan) {
await prisma.jenjangPendidikan.upsert({
// =========== SUBMENU PERPUSTAKAAN DIGITAL =====================
console.log("🔄 Seeding Kategori Buku...");
for (const k of kategoriBuku) {
await prisma.kategoriBuku.upsert({
where: {
id: j.id || undefined,
id: k.id,
},
update: {
nama: j.nama,
name: k.name,
},
create: {
nama: j.nama,
id: k.id,
name: k.name,
},
});
}
console.log("✅ Kategori Buku seeded successfully");
console.log("✅ Jenjang Pendidikan seeded successfully");
console.log("🔄 Seeding Data perpustakaan...");
for (const k of dataPerpustakaan) {
await prisma.dataPerpustakaan.upsert({
where: {
id: k.id,
},
update: {
judul: k.judul,
deskripsi: k.deskripsi,
kategoriId: k.kategoriId,
imageId: k.imageId,
},
create: {
id: k.id,
judul: k.judul,
deskripsi: k.deskripsi,
kategoriId: k.kategoriId,
imageId: k.imageId,
},
});
}
console.log("✅ Data perpustakaan seeded successfully");
console.log("🔄 Seeding Data pendidikan...");
for (const k of dataPendidikan) {
await prisma.dataPendidikan.upsert({
where: {
id: k.id,
},
update: {
name: k.name,
jumlah: k.jumlah
},
create: {
id: k.id,
name: k.name,
jumlah: k.jumlah
},
});
}
console.log("✅ Data pendidikan seeded successfully");
// =========== SUBMENU DATA PENDIDIKAN =====================
})()
.then(() => prisma.$disconnect())
.catch((e) => {

View File

@@ -1,222 +1,26 @@
// /* eslint-disable @typescript-eslint/no-unused-vars */
// // prisma/seedAssets.ts
// import prisma from "@/lib/prisma";
// import AdmZip from "adm-zip";
// import fs from "fs/promises";
// import path from "path";
// import sharp from "sharp";
// import fetchWithRetry from "./data/fetchWithRetry";
// const UPLOADS_DIR = path.resolve(
// process.env.WIBU_UPLOAD_DIR || "uploads"
// );
// // --- Helper: deteksi kategori file ---
// function detectCategory(filename: string): "image" | "document" | "other" {
// const ext = path.extname(filename).toLowerCase();
// if ([".jpg", ".jpeg", ".png", ".webp"].includes(ext)) return "image";
// if ([".pdf", ".doc", ".docx"].includes(ext)) return "document";
// return "other";
// }
// // --- Helper: recursive walk dir ---
// async function walkDir(
// dir: string,
// fileList: string[] = []
// ): Promise<string[]> {
// const entries = await fs.readdir(dir, { withFileTypes: true });
// for (const entry of entries) {
// const fullPath = path.join(dir, entry.name);
// if (entry.isDirectory()) {
// if (entry.name === "__MACOSX") continue; // skip folder sampah
// await walkDir(fullPath, fileList);
// } else {
// if (entry.name.startsWith(".") || entry.name === ".DS_Store") continue; // skip file sampah
// fileList.push(fullPath);
// }
// }
// return fileList;
// }
// export default async function seedAssets() {
// console.log("🚀 Seeding assets...");
// console.log("📁 Upload dir:", UPLOADS_DIR);
// await fs.mkdir(UPLOADS_DIR, { recursive: true });
// // 1. Download zip
// const url =
// "https://cld-dkr-makuro-seafile.wibudev.com/f/eadd52c5bd654ec789a3/?dl=1";
// const res = await fetchWithRetry(url, 3, 20000);
// // Validasi content-type
// const contentType = res.headers.get("content-type");
// if (!contentType?.includes("zip")) {
// throw new Error(`Invalid content-type (${contentType}). Expected ZIP file`);
// }
// const buffer = Buffer.from(await res.arrayBuffer());
// // Validasi ukuran file
// if (buffer.length < 100) {
// throw new Error("Downloaded ZIP is empty or corrupted");
// }
// // Validasi signature ZIP ("PK")
// if (buffer.toString("utf8", 0, 2) !== "PK") {
// throw new Error("Invalid ZIP signature (PK not found)");
// }
// // 2. Extract zip ke folder tmp
// const extractDir = path.join(process.cwd(), "tmp_assets");
// await fs.rm(extractDir, { recursive: true, force: true });
// await fs.mkdir(extractDir, { recursive: true });
// let zip: AdmZip;
// try {
// zip = new AdmZip(buffer);
// } catch (err) {
// throw new Error("Failed to parse ZIP file (corrupted or invalid)");
// }
// try {
// zip.extractAllTo(extractDir, true);
// } catch (err) {
// throw new Error("Failed to extract ZIP contents");
// }
// // 3. Cari semua file valid (recursive)
// const files = await walkDir(extractDir);
// // 4. Loop tiap file & simpan
// for (const filePath of files) {
// const entryName = path.basename(filePath);
// const category = detectCategory(entryName);
// let finalName = entryName;
// let mimeType = "application/octet-stream";
// let targetPath = "";
// if (category === "image") {
// const fileBaseName = path.parse(entryName).name;
// finalName = `${fileBaseName}.webp`;
// targetPath = path.join(UPLOADS_DIR, "images", finalName);
// await fs.mkdir(path.dirname(targetPath), { recursive: true });
// await sharp(filePath).webp({ quality: 80 }).toFile(targetPath);
// mimeType = "image/webp";
// } else if (category === "document") {
// targetPath = path.join(UPLOADS_DIR, "documents", entryName);
// await fs.mkdir(path.dirname(targetPath), { recursive: true });
// await fs.copyFile(filePath, targetPath);
// mimeType = "application/pdf";
// } else {
// targetPath = path.join(UPLOADS_DIR, "other", entryName);
// await fs.mkdir(path.dirname(targetPath), { recursive: true });
// await fs.copyFile(filePath, targetPath);
// }
// const existing = await prisma.fileStorage.findUnique({
// where: { name: finalName },
// });
// if (existing) {
// // Restore kalau soft deleted
// await prisma.fileStorage.update({
// where: { name: finalName },
// data: {
// path: targetPath,
// realName: entryName,
// mimeType,
// link: `/uploads/${category}/${finalName}`,
// category,
// deletedAt: null,
// isActive: true,
// },
// });
// console.log(`♻️ restored: ${category}/${finalName}`);
// } else {
// await prisma.fileStorage.create({
// data: {
// name: finalName,
// realName: entryName,
// path: targetPath,
// mimeType,
// link: `/uploads/${category}/${finalName}`,
// category,
// },
// });
// console.log(`📂 created: ${category}/${finalName}`);
// }
// console.log(`📂 saved: ${category}/${finalName}`);
// }
// // 6. Cleanup
// await fs.rm(extractDir, { recursive: true, force: true });
// console.log("✅ Selesai seed assets!");
// console.log("DB URL (asset):", process.env.DATABASE_URL);
// }
// // --- Auto run kalau dipanggil langsung ---
// if (import.meta.main) {
// seedAssets()
// .catch((err) => {
// console.error("❌ Error seeding assets:", err);
// process.exit(1);
// })
// .finally(async () => {
// await prisma.$disconnect();
// });
// }
/* eslint-disable @typescript-eslint/no-unused-vars */
// prisma/seedAssets.ts
import prisma from "@/lib/prisma";
import AdmZip from "adm-zip";
import fs from "fs/promises";
import path from "path";
import sharp from "sharp";
import mime from "mime-types";
import fetchWithRetry from "./data/fetchWithRetry";
/* =========================
* CONFIG
* ========================= */
const UPLOADS_DIR = path.resolve(
process.env.WIBU_UPLOAD_DIR || "uploads"
);
const UPLOADS_DIR = path.resolve(process.env.WIBU_UPLOAD_DIR || "uploads");
const TMP_DIR = path.join(process.cwd(), "tmp_assets");
const CATEGORY_DIR: Record<FileCategory, string> = {
image: "images",
document: "documents",
other: "other",
};
type FileCategory = "image" | "document" | "other";
/* =========================
* HELPERS
* ========================= */
function detectCategory(filename: string): FileCategory {
// --- Helper: deteksi kategori file ---
function detectCategory(filename: string): "image" | "document" | "other" {
const ext = path.extname(filename).toLowerCase();
if ([".jpg", ".jpeg", ".png", ".webp"].includes(ext)) return "image";
if ([".pdf", ".doc", ".docx", ".txt"].includes(ext)) return "document";
if ([".pdf", ".doc", ".docx"].includes(ext)) return "document";
return "other";
}
// --- Helper: recursive walk dir ---
async function walkDir(
dir: string,
result: string[] = []
fileList: string[] = [],
): Promise<string[]> {
const entries = await fs.readdir(dir, { withFileTypes: true });
@@ -224,139 +28,141 @@ async function walkDir(
const fullPath = path.join(dir, entry.name);
if (entry.isDirectory()) {
if (entry.name === "__MACOSX") continue;
await walkDir(fullPath, result);
if (entry.name === "__MACOSX") continue; // skip folder sampah
await walkDir(fullPath, fileList);
} else {
if (entry.name.startsWith(".") || entry.name === ".DS_Store") continue;
result.push(fullPath);
if (entry.name.startsWith(".") || entry.name === ".DS_Store") continue; // skip file sampah
fileList.push(fullPath);
}
}
return result;
return fileList;
}
async function ensureDir(dir: string) {
await fs.mkdir(dir, { recursive: true });
}
/* =========================
* FILE PROCESSORS
* ========================= */
async function processImage(filePath: string, entryName: string) {
const baseName = path.parse(entryName).name;
const finalName = `${baseName}.webp`;
const targetDir = path.join(UPLOADS_DIR, CATEGORY_DIR.image);
const targetPath = path.join(targetDir, finalName);
await ensureDir(targetDir);
await sharp(filePath).webp({ quality: 80 }).toFile(targetPath);
return {
finalName,
targetPath,
mimeType: "image/webp",
};
}
async function processNonImage(
filePath: string,
entryName: string,
category: FileCategory
) {
const targetDir = path.join(UPLOADS_DIR, CATEGORY_DIR[category]);
const targetPath = path.join(targetDir, entryName);
await ensureDir(targetDir);
await fs.copyFile(filePath, targetPath);
return {
finalName: entryName,
targetPath,
mimeType: mime.lookup(entryName) || "application/octet-stream",
};
}
/* =========================
* MAIN
* ========================= */
export default async function seedAssets() {
console.log("🚀 Seeding assets...");
console.log("📁 Upload dir:", UPLOADS_DIR);
await ensureDir(UPLOADS_DIR);
await fs.mkdir(UPLOADS_DIR, { recursive: true });
/* ===== Download ZIP ===== */
// 1. Download zip
const url =
"https://cld-dkr-makuro-seafile.wibudev.com/f/eadd52c5bd654ec789a3/?dl=1";
"https://cld-dkr-makuro-seafile.wibudev.com/f/03be4043989e4caeb36b/?dl=1";
const res = await fetchWithRetry(url, 3, 20000);
if (!res.headers.get("content-type")?.includes("zip")) {
throw new Error("Invalid ZIP content-type");
// Validasi content-type
const contentType = res.headers.get("content-type");
if (!contentType?.includes("zip")) {
throw new Error(`Invalid content-type (${contentType}). Expected ZIP file`);
}
const buffer = Buffer.from(await res.arrayBuffer());
if (buffer.length < 100 || buffer.toString("utf8", 0, 2) !== "PK") {
throw new Error("Corrupted ZIP file");
// Validasi ukuran file
if (buffer.length < 100) {
throw new Error("Downloaded ZIP is empty or corrupted");
}
/* ===== Extract ===== */
await fs.rm(TMP_DIR, { recursive: true, force: true });
await ensureDir(TMP_DIR);
// Validasi signature ZIP ("PK")
if (buffer.toString("utf8", 0, 2) !== "PK") {
throw new Error("Invalid ZIP signature (PK not found)");
}
const zip = new AdmZip(buffer);
zip.extractAllTo(TMP_DIR, true);
// 2. Extract zip ke folder tmp
const extractDir = path.join(process.cwd(), "tmp_assets");
await fs.rm(extractDir, { recursive: true, force: true });
await fs.mkdir(extractDir, { recursive: true });
/* ===== Process Files ===== */
const files = await walkDir(TMP_DIR);
let zip: AdmZip;
try {
zip = new AdmZip(buffer);
} catch (err) {
throw new Error("Failed to parse ZIP file (corrupted or invalid)");
}
try {
zip.extractAllTo(extractDir, true);
} catch (err) {
throw new Error("Failed to extract ZIP contents");
}
// 3. Cari semua file valid (recursive)
const files = await walkDir(extractDir);
// 4. Loop tiap file & simpan
for (const filePath of files) {
const entryName = path.basename(filePath);
const category = detectCategory(entryName);
let result;
let finalName = entryName;
let mimeType = "application/octet-stream";
let targetPath = "";
if (category === "image") {
result = await processImage(filePath, entryName);
const fileBaseName = path.parse(entryName).name;
finalName = `${fileBaseName}.webp`;
targetPath = path.join(UPLOADS_DIR, "images", finalName);
await fs.mkdir(path.dirname(targetPath), { recursive: true });
await sharp(filePath).webp({ quality: 80 }).toFile(targetPath);
mimeType = "image/webp";
} else if (category === "document") {
targetPath = path.join(UPLOADS_DIR, "documents", entryName);
await fs.mkdir(path.dirname(targetPath), { recursive: true });
await fs.copyFile(filePath, targetPath);
mimeType = "application/pdf";
} else {
result = await processNonImage(filePath, entryName, category);
targetPath = path.join(UPLOADS_DIR, "other", entryName);
await fs.mkdir(path.dirname(targetPath), { recursive: true });
await fs.copyFile(filePath, targetPath);
}
const { finalName, targetPath, mimeType } = result;
const existing = await prisma.fileStorage.findUnique({
where: { name: finalName },
});
const data = {
name: finalName,
realName: entryName,
path: targetPath,
mimeType,
link: `/uploads/${CATEGORY_DIR[category]}/${finalName}`,
category,
deletedAt: null,
isActive: true,
};
if (existing) {
// Restore kalau soft deleted
await prisma.fileStorage.update({
where: { name: finalName },
data,
data: {
path: targetPath,
realName: entryName,
mimeType,
link: `/uploads/${category}/${finalName}`,
category,
deletedAt: null,
isActive: true,
},
});
console.log(`♻️ restored: ${category}/${finalName}`);
} else {
await prisma.fileStorage.create({ data });
await prisma.fileStorage.create({
data: {
name: finalName,
realName: entryName,
path: targetPath,
mimeType,
link: `/uploads/${category}/${finalName}`,
category,
},
});
console.log(`📂 created: ${category}/${finalName}`);
}
console.log(`📂 saved: ${category}/${finalName}`);
}
/* ===== Cleanup ===== */
await fs.rm(TMP_DIR, { recursive: true, force: true });
// 6. Cleanup
await fs.rm(extractDir, { recursive: true, force: true });
console.log("✅ Selesai seed assets!");
console.log("DB URL (asset):", process.env.DATABASE_URL);
}
/* ===== Auto Run ===== */
// --- Auto run kalau dipanggil langsung ---
if (import.meta.main) {
seedAssets()
.catch((err) => {
@@ -367,3 +173,193 @@ if (import.meta.main) {
await prisma.$disconnect();
});
}
// prisma/seedAssets.ts
// import prisma from "@/lib/prisma";
// import AdmZip from "adm-zip";
// import fs from "fs/promises";
// import path from "path";
// import sharp from "sharp";
// import mime from "mime-types";
// import fetchWithRetry from "./data/fetchWithRetry";
// /* =========================
// * CONFIG
// * ========================= */
// const UPLOADS_DIR = path.resolve(
// process.env.WIBU_UPLOAD_DIR || "uploads"
// );
// const TMP_DIR = path.join(process.cwd(), "tmp_assets");
// const CATEGORY_DIR: Record<FileCategory, string> = {
// image: "images",
// document: "documents",
// other: "other",
// };
// type FileCategory = "image" | "document" | "other";
// /* =========================
// * HELPERS
// * ========================= */
// function detectCategory(filename: string): FileCategory {
// const ext = path.extname(filename).toLowerCase();
// if ([".jpg", ".jpeg", ".png", ".webp"].includes(ext)) return "image";
// if ([".pdf", ".doc", ".docx", ".txt"].includes(ext)) return "document";
// return "other";
// }
// async function walkDir(
// dir: string,
// result: string[] = []
// ): Promise<string[]> {
// const entries = await fs.readdir(dir, { withFileTypes: true });
// for (const entry of entries) {
// const fullPath = path.join(dir, entry.name);
// if (entry.isDirectory()) {
// if (entry.name === "__MACOSX") continue;
// await walkDir(fullPath, result);
// } else {
// if (entry.name.startsWith(".") || entry.name === ".DS_Store") continue;
// result.push(fullPath);
// }
// }
// return result;
// }
// async function ensureDir(dir: string) {
// await fs.mkdir(dir, { recursive: true });
// }
// /* =========================
// * FILE PROCESSORS
// * ========================= */
// async function processImage(filePath: string, entryName: string) {
// const baseName = path.parse(entryName).name;
// const finalName = `${baseName}.webp`;
// const targetDir = path.join(UPLOADS_DIR, CATEGORY_DIR.image);
// const targetPath = path.join(targetDir, finalName);
// await ensureDir(targetDir);
// await sharp(filePath).webp({ quality: 80 }).toFile(targetPath);
// return {
// finalName,
// targetPath,
// mimeType: "image/webp",
// };
// }
// async function processNonImage(
// filePath: string,
// entryName: string,
// category: FileCategory
// ) {
// const targetDir = path.join(UPLOADS_DIR, CATEGORY_DIR[category]);
// const targetPath = path.join(targetDir, entryName);
// await ensureDir(targetDir);
// await fs.copyFile(filePath, targetPath);
// return {
// finalName: entryName,
// targetPath,
// mimeType: mime.lookup(entryName) || "application/octet-stream",
// };
// }
// /* =========================
// * MAIN
// * ========================= */
// export default async function seedAssets() {
// console.log("🚀 Seeding assets...");
// console.log("📁 Upload dir:", UPLOADS_DIR);
// await ensureDir(UPLOADS_DIR);
// /* ===== Download ZIP ===== */
// const url =
// "https://cld-dkr-makuro-seafile.wibudev.com/f/e13d5429785640c098ae/?dl=1";
// const res = await fetchWithRetry(url, 3, 20000);
// if (!res.headers.get("content-type")?.includes("zip")) {
// throw new Error("Invalid ZIP content-type");
// }
// const buffer = Buffer.from(await res.arrayBuffer());
// if (buffer.length < 100 || buffer.toString("utf8", 0, 2) !== "PK") {
// throw new Error("Corrupted ZIP file");
// }
// /* ===== Extract ===== */
// await fs.rm(TMP_DIR, { recursive: true, force: true });
// await ensureDir(TMP_DIR);
// const zip = new AdmZip(buffer);
// zip.extractAllTo(TMP_DIR, true);
// /* ===== Process Files ===== */
// const files = await walkDir(TMP_DIR);
// for (const filePath of files) {
// const entryName = path.basename(filePath);
// const category = detectCategory(entryName);
// let result;
// if (category === "image") {
// result = await processImage(filePath, entryName);
// } else {
// result = await processNonImage(filePath, entryName, category);
// }
// const { finalName, targetPath, mimeType } = result;
// const existing = await prisma.fileStorage.findUnique({
// where: { name: finalName },
// });
// const data = {
// name: finalName,
// realName: entryName,
// path: targetPath,
// mimeType,
// link: `/uploads/${CATEGORY_DIR[category]}/${finalName}`,
// category,
// deletedAt: null,
// isActive: true,
// };
// if (existing) {
// await prisma.fileStorage.update({
// where: { name: finalName },
// data,
// });
// console.log(`♻️ restored: ${category}/${finalName}`);
// } else {
// await prisma.fileStorage.create({ data });
// console.log(`📂 created: ${category}/${finalName}`);
// }
// }
// /* ===== Cleanup ===== */
// await fs.rm(TMP_DIR, { recursive: true, force: true });
// console.log("✅ Selesai seed assets!");
// }
// /* ===== Auto Run ===== */
// if (import.meta.main) {
// seedAssets()
// .catch((err) => {
// console.error("❌ Error seeding assets:", err);
// process.exit(1);
// })
// .finally(async () => {
// await prisma.$disconnect();
// });
// }

View File

@@ -400,6 +400,42 @@ const kategoriBuku = proxy({
}
},
},
findManyAll: {
data: [] as Prisma.KategoriBukuGetPayload<{
omit: {
isActive: true;
};
}>[],
loading: false,
search: "",
load: async (search = "") => {
// Change to arrow function
kategoriBuku.findManyAll.loading = true; // Use the full path to access the property
kategoriBuku.findManyAll.search = search;
try {
const query: any = { search };
if (search) query.search = search;
const res = await ApiFetch.api.pendidikan.perpustakaandigital.kategoribuku[
"findManyAll"
].get({
query,
});
if (res.status === 200 && res.data?.success) {
kategoriBuku.findManyAll.data = res.data.data || [];
} else {
console.error("Failed to load pegawai:", res.data?.message);
kategoriBuku.findManyAll.data = [];
}
} catch (error) {
console.error("Error loading pegawai:", error);
kategoriBuku.findManyAll.data = [];
} finally {
kategoriBuku.findManyAll.loading = false;
}
},
},
findUnique: {
data: null as Prisma.KategoriBukuGetPayload<{
omit: {

View File

@@ -40,7 +40,7 @@ function EditPerpustakaanDigital() {
// Load kategori & data awal
useEffect(() => {
perpustakaanDigitalState.kategoriBuku.findMany.load();
perpustakaanDigitalState.kategoriBuku.findManyAll.load();
const loadData = async () => {
const id = Array.isArray(params?.id) ? params.id[0] : params?.id;

View File

@@ -19,7 +19,7 @@ function CreateDataPerpustakaan() {
const [isSubmitting, setIsSubmitting] = useState(false);
useEffect(() => {
perpustakaanDigitalState.kategoriBuku.findMany.load();
perpustakaanDigitalState.kategoriBuku.findManyAll.load();
}, []);
const resetForm = () => {
@@ -109,7 +109,7 @@ function CreateDataPerpustakaan() {
placeholder='Pilih kategori'
value={createState.create.form.kategoriId || ""}
onChange={(val) => { createState.create.form.kategoriId = val ?? ""; }}
data={perpustakaanDigitalState.kategoriBuku.findMany.data?.map((item) => ({
data={perpustakaanDigitalState.kategoriBuku.findManyAll.data?.map((item) => ({
value: item.id,
label: item.name,
}))}

View File

@@ -8,7 +8,8 @@ async function pengajarFindMany(context: Context) {
const limit = Number(context.query.limit) || 10;
const skip = (page - 1) * limit;
const search = (context.query.search as string) || "";
const jenjangPendidikanName = (context.query.jenjangPendidikanId as string) || "";
const jenjangPendidikanName =
(context.query.jenjangPendidikanId as string) || "";
const where: any = { isActive: true };
@@ -19,17 +20,17 @@ async function pengajarFindMany(context: Context) {
where: {
nama: {
equals: jenjangPendidikanName,
mode: 'insensitive'
mode: "insensitive",
},
isActive: true
isActive: true,
},
orderBy: { nama: 'desc' },
orderBy: { nama: "desc" },
});
if (jenjangPendidikan) {
where.lembaga = {
...where.lembaga,
jenjangId: jenjangPendidikan.id
jenjangId: jenjangPendidikan.id,
};
} else {
// Jika tidak ditemukan, return data kosong
@@ -48,8 +49,8 @@ async function pengajarFindMany(context: Context) {
// Add search condition if search term exists
if (search) {
where.OR = [
{ nama: { contains: search, mode: 'insensitive' } },
{ lembaga: { nama: { contains: search, mode: 'insensitive' } } }
{ nama: { contains: search, mode: "insensitive" } },
{ lembaga: { nama: { contains: search, mode: "insensitive" } } },
];
}
@@ -59,17 +60,15 @@ async function pengajarFindMany(context: Context) {
include: {
lembaga: {
include: {
jenjangPendidikan: true
}
}
jenjangPendidikan: true,
},
},
},
skip,
take: limit,
orderBy: { nama: 'asc' },
orderBy: [{ nama: "asc" }, { lembaga: { nama: "asc" } }],
}),
prisma.pengajar.count({
where,
})
prisma.pengajar.count({ where }),
]);
return {
@@ -85,8 +84,8 @@ async function pengajarFindMany(context: Context) {
console.error("Error in pengajarFindMany:", error);
return {
success: false,
message: `Failed fetch pengajar: ${error instanceof Error ? error.message : 'Unknown error'}`,
message: `Failed fetch pengajar: ${error instanceof Error ? error.message : "Unknown error"}`,
};
}
}
export default pengajarFindMany;
export default pengajarFindMany;

View File

@@ -8,7 +8,8 @@ async function siswaFindMany(context: Context) {
const limit = Number(context.query.limit) || 10;
const skip = (page - 1) * limit;
const search = (context.query.search as string) || "";
const jenjangPendidikanName = (context.query.jenjangPendidikanName as string) || "";
const jenjangPendidikanName =
(context.query.jenjangPendidikanName as string) || "";
// Buat where clause
const where: any = { isActive: true };
@@ -20,16 +21,16 @@ async function siswaFindMany(context: Context) {
where: {
nama: {
equals: jenjangPendidikanName,
mode: 'insensitive'
mode: "insensitive",
},
isActive: true,
}
},
});
if (jenjangPendidikan) {
where.lembaga = {
...where.lembaga,
jenjangId: jenjangPendidikan.id
jenjangId: jenjangPendidikan.id,
};
} else {
// Jika tidak ditemukan, return data kosong
@@ -48,8 +49,8 @@ async function siswaFindMany(context: Context) {
// Add search functionality
if (search) {
where.OR = [
{ nama: { contains: search, mode: 'insensitive' } },
{ lembaga: { nama: { contains: search, mode: 'insensitive' } } }
{ nama: { contains: search, mode: "insensitive" } },
{ lembaga: { nama: { contains: search, mode: "insensitive" } } },
];
}
@@ -65,15 +66,13 @@ async function siswaFindMany(context: Context) {
},
skip,
take: limit,
orderBy: { nama: 'asc' },
orderBy: [{ nama: "asc" }, { lembaga: { nama: "asc" } }],
}),
prisma.siswa.count({
where,
})
prisma.siswa.count({ where }),
]);
console.log('Fetched siswa data count:', data.length);
console.log('Total siswa count:', total);
console.log("Fetched siswa data count:", data.length);
console.log("Total siswa count:", total);
return {
success: true,
@@ -88,7 +87,7 @@ async function siswaFindMany(context: Context) {
console.error("Error in siswaFindMany:", error);
return {
success: false,
message: `Failed fetch siswa: ${error instanceof Error ? error.message : 'Unknown error'}`,
message: `Failed fetch siswa: ${error instanceof Error ? error.message : "Unknown error"}`,
};
}
}

View File

@@ -0,0 +1,43 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import prisma from "@/lib/prisma";
import { Context } from "elysia";
export default async function kategoriBukuFindManyAll(context: Context) {
const search = (context.query.search as string) || "";
const isActiveParam = context.query.isActive;
// Buat where clause dinamis
const where: any = {};
if (isActiveParam !== undefined) {
where.isActive = isActiveParam === "true";
}
if (search) {
where.OR = [
{ name: { contains: search, mode: "insensitive" } },
];
}
try {
const data = await prisma.kategoriBuku.findMany({
where,
orderBy: { name: "asc" },
});
return {
success: true,
message: "Success fetch all kategori buku (non-paginated)",
total: data.length,
data,
};
} catch (error) {
console.error("Find many all error:", error);
return {
success: false,
message: "Failed fetch all kategori buku",
total: 0,
data: [],
};
}
}

View File

@@ -4,6 +4,7 @@ import kategoriBukuDelete from "./del";
import kategoriBukuFindMany from "./findMany";
import kategoriBukuFindUnique from "./findUnique";
import kategoriBukuUpdate from "./updt";
import kategoriBukuFindManyAll from "./findManyAll";
const KategoriBuku = new Elysia({
prefix: "/kategoribuku",
@@ -17,6 +18,7 @@ const KategoriBuku = new Elysia({
})
.get("/findMany", kategoriBukuFindMany)
.get("/findManyAll", kategoriBukuFindManyAll)
.get("/:id", async (context) => {
const response = await kategoriBukuFindUnique(
new Request(context.request)

View File

@@ -173,9 +173,9 @@ function Content({ kategoriBuku }: { kategoriBuku: string }) {
</Box>
<Center mt="lg">
<Pagination
total={totalPages}
value={currentPage}
onChange={handlePageChange}
total={totalPages}
color="blue"
radius="md"
/>

View File

@@ -46,7 +46,7 @@ export default function LayoutTabs({
// 🟦 Ambil kategori buku saat mount
useEffect(() => {
perpustakaanDigitalState.kategoriBuku.findMany.load();
perpustakaanDigitalState.kategoriBuku.findManyAll.load();
}, []);
useEffect(() => {
@@ -86,7 +86,7 @@ export default function LayoutTabs({
// 🟩 Tabs dinamis berdasarkan kategori dari state
const kategoriTabs =
snap.kategoriBuku.findMany.data?.map((item) => ({
snap.kategoriBuku.findManyAll.data?.map((item) => ({
label: item.name,
value: item.name.toLowerCase().replace(/\s+/g, '-'),
href: `/darmasaba/pendidikan/perpustakaan-digital/${encodeURIComponent(item.name.toLowerCase().replace(/\s+/g, '-'))}`,

51
xx.ts
View File

@@ -1,4 +1,51 @@
import 'colors'
// // import {v4} from 'uuid'
// import prisma from "@/lib/prisma";
console.log("halo".blue)
// // console.log(v4())
// const listNama = [
// { name: "Adi Pratama", phone: "081234567801" },
// { name: "Budi Santoso", phone: "081234567802" },
// { name: "Citra Lestari", phone: "081234567803" },
// { name: "Dewi Anggraini", phone: "081234567804" },
// { name: "Eka Putra", phone: "081234567805" },
// { name: "Fajar Nugroho", phone: "081234567806" },
// { name: "Gita Maharani", phone: "081234567807" },
// { name: "Hadi Wijaya", phone: "081234567808" },
// { name: "Indah Purnama", phone: "081234567809" },
// { name: "Joko Susilo", phone: "081234567810" },
// { name: "Kartika Sari", phone: "081234567811" },
// { name: "Lukman Hakim", phone: "081234567812" },
// { name: "Maya Fitriani", phone: "081234567813" },
// { name: "Nanda Saputra", phone: "081234567814" },
// { name: "Oka Mahendra", phone: "081234567815" },
// { name: "Putri Ayu", phone: "081234567816" },
// { name: "Rizky Kurniawan", phone: "081234567817" },
// { name: "Sari Wulandari", phone: "081234567818" },
// { name: "Taufik Hidayat", phone: "081234567819" },
// { name: "Yoga Prasetya", phone: "081234567820" },
// ];
// (async () => {
// for (const n of listNama) {
// await prisma.percobaan.upsert({
// create: {
// nama: n.name,
// phone: n.phone,
// },
// update: {
// nama: n.name,
// },
// where: {
// phone: n.phone,
// },
// });
// }
// })()
// .then(() => {
// console.log("success");
// })
// .catch((e) => {
// console.log(e);
// });