feat(sosial-dashboard): tambah API ringkasan pendidikan & beasiswa + CRUD event budaya - bump 0.1.55
- API GET /api/pendidikan/ringkasan/stats: siswa per jenjang, jumlah lembaga & pengajar - API GET /api/pendidikan/beasiswa/ringkasan/stats: jumlah penerima, dana, tahun ajaran - Schema + migration: model EventBudaya (nama, tanggal, lokasi, deskripsi) - API CRUD /api/desa/eventbudaya: create, find-many, findUnique, updt, del - State admin: eventBudaya.ts (valtio proxy, create/findMany/edit/delete) - Admin CMS: /admin/desa/event-budaya (list, create, edit) - Navbar: tambah entry Desa_9 Event Budaya di semua role - Seeder: 8 event budaya Bali untuk Desa Darmasaba Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
30
prisma/_seeder_list/desa/event-budaya/seed_event_budaya.ts
Normal file
30
prisma/_seeder_list/desa/event-budaya/seed_event_budaya.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import { loadJsonData } from "../../../load-json";
|
||||
|
||||
const eventBudayaJson = loadJsonData("desa/event-budaya/event-budaya.json");
|
||||
|
||||
export async function seedEventBudaya() {
|
||||
console.log("🔄 Seeding Event Budaya...");
|
||||
|
||||
for (const item of eventBudayaJson) {
|
||||
await prisma.eventBudaya.upsert({
|
||||
where: { id: item.id },
|
||||
update: {
|
||||
nama: item.nama,
|
||||
tanggal: new Date(item.tanggal),
|
||||
lokasi: item.lokasi,
|
||||
deskripsi: item.deskripsi,
|
||||
},
|
||||
create: {
|
||||
id: item.id,
|
||||
nama: item.nama,
|
||||
tanggal: new Date(item.tanggal),
|
||||
lokasi: item.lokasi,
|
||||
deskripsi: item.deskripsi,
|
||||
},
|
||||
});
|
||||
console.log(` ✅ Event: ${item.nama}`);
|
||||
}
|
||||
|
||||
console.log("🎉 Event Budaya seed selesai");
|
||||
}
|
||||
58
prisma/data/desa/event-budaya/event-budaya.json
Normal file
58
prisma/data/desa/event-budaya/event-budaya.json
Normal file
@@ -0,0 +1,58 @@
|
||||
[
|
||||
{
|
||||
"id": "event-budaya-1",
|
||||
"nama": "Hari Kesaktian Pancasila",
|
||||
"tanggal": "2025-10-01T07:00:00.000Z",
|
||||
"lokasi": "Balai Desa Darmasaba",
|
||||
"deskripsi": "Peringatan Hari Kesaktian Pancasila diikuti seluruh perangkat desa dan warga Desa Darmasaba dengan upacara bendera dan kegiatan budaya."
|
||||
},
|
||||
{
|
||||
"id": "event-budaya-2",
|
||||
"nama": "Upacara Ngusaba Desa",
|
||||
"tanggal": "2025-11-15T08:00:00.000Z",
|
||||
"lokasi": "Pura Puseh Desa Darmasaba",
|
||||
"deskripsi": "Upacara adat tahunan Ngusaba Desa sebagai bentuk rasa syukur kepada Ida Sang Hyang Widhi Wasa atas keselamatan dan kemakmuran desa."
|
||||
},
|
||||
{
|
||||
"id": "event-budaya-3",
|
||||
"nama": "Festival Budaya Desa Darmasaba",
|
||||
"tanggal": "2026-05-20T09:00:00.000Z",
|
||||
"lokasi": "Lapangan Desa Darmasaba",
|
||||
"deskripsi": "Festival tahunan menampilkan kesenian tradisional Bali seperti tari kecak, legong, dan barong oleh sanggar seni dari Desa Darmasaba."
|
||||
},
|
||||
{
|
||||
"id": "event-budaya-4",
|
||||
"nama": "Perayaan HUT Desa Darmasaba",
|
||||
"tanggal": "2026-08-17T07:30:00.000Z",
|
||||
"lokasi": "Balai Desa Darmasaba",
|
||||
"deskripsi": "Peringatan Hari Ulang Tahun Kemerdekaan Republik Indonesia sekaligus hari jadi Desa Darmasaba dengan berbagai lomba dan pertunjukan budaya."
|
||||
},
|
||||
{
|
||||
"id": "event-budaya-5",
|
||||
"nama": "Perayaan Galungan dan Kuningan",
|
||||
"tanggal": "2026-03-04T06:00:00.000Z",
|
||||
"lokasi": "Seluruh wilayah Desa Darmasaba",
|
||||
"deskripsi": "Rangkaian perayaan Hari Raya Galungan dan Kuningan sebagai hari kemenangan dharma melawan adharma, dirayakan seluruh umat Hindu di Desa Darmasaba."
|
||||
},
|
||||
{
|
||||
"id": "event-budaya-6",
|
||||
"nama": "Lomba Ogoh-Ogoh Desa",
|
||||
"tanggal": "2026-03-18T15:00:00.000Z",
|
||||
"lokasi": "Lapangan Desa Darmasaba",
|
||||
"deskripsi": "Lomba pembuatan dan parade ogoh-ogoh antar banjar se-Desa Darmasaba dalam rangka menyambut Hari Raya Nyepi."
|
||||
},
|
||||
{
|
||||
"id": "event-budaya-7",
|
||||
"nama": "Pementasan Wayang Kulit",
|
||||
"tanggal": "2026-06-10T19:00:00.000Z",
|
||||
"lokasi": "Wantilan Desa Darmasaba",
|
||||
"deskripsi": "Pementasan wayang kulit semalam suntuk oleh dalang dari Desa Darmasaba sebagai bagian dari pelestarian seni budaya Bali."
|
||||
},
|
||||
{
|
||||
"id": "event-budaya-8",
|
||||
"nama": "Upacara Melaspas Gedung Balai Banjar",
|
||||
"tanggal": "2026-09-05T08:00:00.000Z",
|
||||
"lokasi": "Banjar Desa Darmasaba",
|
||||
"deskripsi": "Upacara Melaspas sebagai ritual penyucian bangunan baru balai banjar agar membawa keselamatan dan kesejahteraan bagi krama banjar."
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,22 @@
|
||||
-- DropForeignKey
|
||||
ALTER TABLE "PasarDesa" DROP CONSTRAINT "PasarDesa_kategoriProdukId_fkey";
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "KategoriProdukUmkm" ALTER COLUMN "updatedAt" DROP DEFAULT;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "EventBudaya" (
|
||||
"id" TEXT NOT NULL,
|
||||
"nama" TEXT NOT NULL,
|
||||
"tanggal" TIMESTAMP(3) NOT NULL,
|
||||
"lokasi" TEXT NOT NULL,
|
||||
"deskripsi" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
||||
|
||||
CONSTRAINT "EventBudaya_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "PasarDesa" ADD CONSTRAINT "PasarDesa_kategoriProdukId_fkey" FOREIGN KEY ("kategoriProdukId") REFERENCES "KategoriProdukUmkm"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
@@ -2553,3 +2553,15 @@ model RingkasanKesehatanDesa {
|
||||
isActive Boolean @default(true)
|
||||
}
|
||||
|
||||
// ========================================= EVENT BUDAYA ========================================= //
|
||||
model EventBudaya {
|
||||
id String @id @default(cuid())
|
||||
nama String
|
||||
tanggal DateTime
|
||||
lokasi String
|
||||
deskripsi String? @db.Text
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
isActive Boolean @default(true)
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import { seedBerita } from "./_seeder_list/desa/berita/seed_berita";
|
||||
import { seedKegiatanDesa } from "./_seeder_list/desa/seed_kegiatan_desa";
|
||||
import { seedEventBudaya } from "./_seeder_list/desa/event-budaya/seed_event_budaya";
|
||||
import { seedFoto } from "./_seeder_list/desa/gallery/foto/seed_foto";
|
||||
import { seedVideo } from "./_seeder_list/desa/gallery/video/seed_video";
|
||||
import { seedLayanan } from "./_seeder_list/desa/layanan/seed_layanan";
|
||||
@@ -392,6 +393,7 @@ import seedAssets from "./seed_assets";
|
||||
// ===== SOSIAL DASHBOARD =====
|
||||
await seedRingkasanKesehatan();
|
||||
await seedKegiatanDesa();
|
||||
await seedEventBudaya();
|
||||
|
||||
// ===== DESA =====
|
||||
await seedMusikDesa();
|
||||
|
||||
Reference in New Issue
Block a user