Menambahkan menu tarif dan layanan, admin bisa create, edit, delete tarif dan layanan Dibagian fasilitas kesehatan admin bisa multiselect bagian dokter dan tarif layanan Di tampilan user juga sudah disesuaikan dengan datanya bisa muncul lebih dari 1 dokter dan 1 tarif layanan
2248 lines
81 KiB
Plaintext
2248 lines
81 KiB
Plaintext
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "postgresql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
model Layanan {
|
|
id String @id @default(cuid())
|
|
name String @unique
|
|
}
|
|
|
|
model Potensi {
|
|
id String @id @default(cuid())
|
|
name String @unique
|
|
}
|
|
|
|
model LandingPage_Layanan {
|
|
id String @id @default(cuid())
|
|
deksripsi String
|
|
}
|
|
|
|
// ========================================= APPMENU ========================================= //
|
|
model AppMenu {
|
|
id String @id @default(cuid())
|
|
name String @unique
|
|
link String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
AppMenuChild AppMenuChild[]
|
|
}
|
|
|
|
// ========================================= APPMENUCHILD ========================================= //
|
|
model AppMenuChild {
|
|
id String @id @default(cuid())
|
|
name String @unique
|
|
link String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
AppMenu AppMenu? @relation(fields: [appMenuId], references: [id])
|
|
appMenuId String?
|
|
}
|
|
|
|
// ========================================= FILE STORAGE ========================================= //
|
|
|
|
model FileStorage {
|
|
id String @id @default(cuid())
|
|
name String @unique
|
|
realName String
|
|
path String
|
|
mimeType String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime?
|
|
isActive Boolean @default(true)
|
|
link String
|
|
category String // "image" / "document" / "other"
|
|
Berita Berita[]
|
|
PotensiDesa PotensiDesa[]
|
|
Posyandu Posyandu[]
|
|
StrukturPPID StrukturPPID[]
|
|
GalleryFoto GalleryFoto[]
|
|
Pelapor Pelapor[]
|
|
Penghargaan Penghargaan[]
|
|
ProfileDesaImage ProfileDesaImage[]
|
|
ProfilePPID ProfilePPID[]
|
|
ProfilPerbekel ProfilPerbekel[]
|
|
Puskesmas Puskesmas[]
|
|
ProgramKesehatan ProgramKesehatan[]
|
|
PenangananDarurat PenangananDarurat[]
|
|
KontakDarurat KontakDarurat[]
|
|
InfoWabahPenyakit InfoWabahPenyakit[]
|
|
KeamananLingkungan KeamananLingkungan[]
|
|
MenuTipsKeamanan MenuTipsKeamanan[]
|
|
PelayananSuratKeteranganImage PelayananSuratKeterangan[] @relation("PelayananSuratKeteranganImage")
|
|
PelayananSuratKeteranganImage2 PelayananSuratKeterangan[] @relation("PelayananSuratKeteranganImage2")
|
|
PasarDesa PasarDesa[]
|
|
PegawaiBumDes PegawaiBumDes[]
|
|
DesaDigital DesaDigital[]
|
|
InfoTekno InfoTekno[]
|
|
PengaduanMasyarakat PengaduanMasyarakat[]
|
|
KegiatanDesa KegiatanDesa[]
|
|
ProgramInovasi ProgramInovasi[]
|
|
PejabatDesa PejabatDesa[]
|
|
MediaSosial MediaSosial[]
|
|
DesaAntiKorupsi DesaAntiKorupsi[]
|
|
SDGSDesa SdgsDesa[]
|
|
APBDesImage APBDes[] @relation("APBDesImage")
|
|
APBDesFile APBDes[] @relation("APBDesFile")
|
|
PrestasiDesa PrestasiDesa[]
|
|
DataPerpustakaan DataPerpustakaan[]
|
|
PegawaiPPID PegawaiPPID[]
|
|
PerbekelDariMasaKeMasa PerbekelDariMasaKeMasa[]
|
|
|
|
MitraKolaborasi MitraKolaborasi[]
|
|
|
|
ArtikelKesehatan ArtikelKesehatan[]
|
|
StrukturBumDes StrukturBumDes[]
|
|
}
|
|
|
|
//========================================= MENU LANDING PAGE ========================================= //
|
|
//========================================= PROFILE ========================================= //
|
|
model PejabatDesa {
|
|
id String @id @default(cuid())
|
|
name String @unique @db.VarChar(255)
|
|
position String
|
|
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 ProgramInovasi {
|
|
id String @id @default(cuid())
|
|
name String @unique @db.VarChar(255)
|
|
description String? @db.Text
|
|
image FileStorage? @relation(fields: [imageId], references: [id])
|
|
imageId String?
|
|
link String? @db.VarChar(255)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime? @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model MediaSosial {
|
|
id String @id @default(cuid())
|
|
name String
|
|
image FileStorage? @relation(fields: [imageId], references: [id])
|
|
imageId String?
|
|
icon String?
|
|
iconUrl String? @db.VarChar(255)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime?
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
//========================================= DESA ANTI KORUPSI ========================================= //
|
|
model DesaAntiKorupsi {
|
|
id String @id @default(cuid())
|
|
name String @unique
|
|
deskripsi String @db.Text
|
|
kategori KategoriDesaAntiKorupsi @relation(fields: [kategoriId], references: [id])
|
|
kategoriId String
|
|
file FileStorage? @relation(fields: [fileId], references: [id])
|
|
fileId String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model KategoriDesaAntiKorupsi {
|
|
id String @id @default(cuid())
|
|
name String @unique
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
DesaAntiKorupsi DesaAntiKorupsi[]
|
|
}
|
|
|
|
//========================================= SDGS Desa ========================================= //
|
|
model SdgsDesa {
|
|
id String @id @default(cuid())
|
|
name String
|
|
jumlah String
|
|
image FileStorage? @relation(fields: [imageId], references: [id])
|
|
imageId String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
//========================================= APBDes ========================================= //
|
|
model APBDes {
|
|
id String @id @default(cuid())
|
|
tahun Int?
|
|
name String? // misalnya: "APBDes Tahun 2025"
|
|
deskripsi String?
|
|
jumlah String? // total keseluruhan (opsional, bisa juga dihitung dari items)
|
|
items APBDesItem[]
|
|
image FileStorage? @relation("APBDesImage", fields: [imageId], references: [id])
|
|
imageId String?
|
|
file FileStorage? @relation("APBDesFile", fields: [fileId], references: [id])
|
|
fileId String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime? // opsional, tidak perlu default now()
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model APBDesItem {
|
|
id String @id @default(cuid())
|
|
kode String // contoh: "4", "4.1", "4.1.2"
|
|
uraian String // nama item, contoh: "Pendapatan Asli Desa", "Hasil Usaha"
|
|
anggaran Float // dalam satuan Rupiah (bisa DECIMAL di DB, tapi Float umum di TS/JS)
|
|
realisasi Float
|
|
selisih Float // realisasi - anggaran
|
|
persentase Float
|
|
tipe String? // (realisasi / anggaran) * 100
|
|
level Int // 1 = kelompok utama, 2 = sub-kelompok, 3 = detail
|
|
parentId String? // untuk relasi hierarki
|
|
parent APBDesItem? @relation("APBDesItemParent", fields: [parentId], references: [id])
|
|
children APBDesItem[] @relation("APBDesItemParent")
|
|
apbdesId String
|
|
apbdes APBDes @relation(fields: [apbdesId], references: [id])
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime?
|
|
isActive Boolean @default(true)
|
|
|
|
@@index([kode])
|
|
@@index([level])
|
|
@@index([apbdesId])
|
|
}
|
|
|
|
//========================================= PRESTASI DESA ========================================= //
|
|
model PrestasiDesa {
|
|
id String @id @default(cuid())
|
|
name String
|
|
deskripsi String @db.Text
|
|
kategori KategoriPrestasiDesa @relation(fields: [kategoriId], references: [id])
|
|
kategoriId String
|
|
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 KategoriPrestasiDesa {
|
|
id String @id @default(cuid())
|
|
name String @unique
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
PrestasiDesa PrestasiDesa[]
|
|
}
|
|
|
|
//========================================= INDEKS KEPUASAAN MASYARAKAT ========================================= //
|
|
model Responden {
|
|
id String @id @default(cuid())
|
|
name String @unique
|
|
tanggal DateTime @db.Date // misal: 2025-05-01
|
|
jenisKelamin JenisKelaminResponden @relation(fields: [jenisKelaminId], references: [id])
|
|
jenisKelaminId String
|
|
rating PilihanRatingResponden @relation(fields: [ratingId], references: [id])
|
|
ratingId String
|
|
kelompokUmur UmurResponden @relation(fields: [kelompokUmurId], references: [id])
|
|
kelompokUmurId String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model JenisKelaminResponden {
|
|
id String @id @default(cuid())
|
|
name String @unique
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
Responden Responden[]
|
|
}
|
|
|
|
model PilihanRatingResponden {
|
|
id String @id @default(cuid())
|
|
name String @unique
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
Responden Responden[]
|
|
}
|
|
|
|
model UmurResponden {
|
|
id String @id @default(cuid())
|
|
name String @unique
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
Responden Responden[]
|
|
}
|
|
|
|
//========================================= MENU PPID ========================================= //
|
|
|
|
//========================================= STRUKTUR PPID ========================================= //
|
|
model StrukturPPID {
|
|
id String @id @default(cuid())
|
|
name 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)
|
|
PosisiOrganisasiPPID PosisiOrganisasiPPID? @relation(fields: [posisiOrganisasiPPIDId], references: [id])
|
|
posisiOrganisasiPPIDId String?
|
|
PegawaiPPID PegawaiPPID? @relation(fields: [pegawaiPPIDId], references: [id])
|
|
pegawaiPPIDId String?
|
|
}
|
|
|
|
model PosisiOrganisasiPPID {
|
|
id String @id @default(cuid())
|
|
nama String @db.VarChar(100)
|
|
deskripsi String? @db.Text
|
|
hierarki Int
|
|
pegawai PegawaiPPID[]
|
|
strukturOrganisasi StrukturPPID[] // Relasi balik
|
|
parentId String?
|
|
isActive Boolean @default(true)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
parent PosisiOrganisasiPPID? @relation("Parent", fields: [parentId], references: [id])
|
|
children PosisiOrganisasiPPID[] @relation("Parent")
|
|
StrukturOrganisasiPPID StrukturOrganisasiPPID[]
|
|
}
|
|
|
|
model PegawaiPPID {
|
|
id String @id @default(cuid())
|
|
namaLengkap String @db.VarChar(255)
|
|
gelarAkademik String? @db.VarChar(100)
|
|
image FileStorage? @relation(fields: [imageId], references: [id])
|
|
imageId String?
|
|
tanggalMasuk DateTime? @db.Date
|
|
email String? @unique @db.VarChar(255)
|
|
telepon String? @db.VarChar(20)
|
|
alamat String? @db.Text
|
|
posisiId String @db.VarChar(50)
|
|
isActive Boolean @default(true)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
posisi PosisiOrganisasiPPID @relation(fields: [posisiId], references: [id])
|
|
strukturOrganisasi StrukturPPID[] // Relasi balik
|
|
StrukturOrganisasiPPID StrukturOrganisasiPPID[]
|
|
}
|
|
|
|
model StrukturOrganisasiPPID {
|
|
id String @id @default(uuid())
|
|
posisiOrganisasiId String @db.VarChar(50)
|
|
pegawaiId String
|
|
hubunganOrganisasiId String
|
|
posisiOrganisasi PosisiOrganisasiPPID @relation(fields: [posisiOrganisasiId], references: [id])
|
|
pegawai PegawaiPPID @relation(fields: [pegawaiId], references: [id])
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime?
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= VISI MISI PPID ========================================= //
|
|
model VisiMisiPPID {
|
|
id String @id @default(cuid())
|
|
visi String @db.Text
|
|
misi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= DASAR HUKUM PPID ========================================= //
|
|
model DasarHukumPPID {
|
|
id String @id @default(cuid())
|
|
judul String @db.Text
|
|
content String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= PROFILE PPID ========================================= //
|
|
model ProfilePPID {
|
|
id String @id @default(cuid())
|
|
name String @db.Text
|
|
biodata String @db.Text
|
|
riwayat String @db.Text
|
|
pengalaman String @db.Text
|
|
unggulan String @db.Text
|
|
imageUrl String?
|
|
image FileStorage? @relation(fields: [imageId], references: [id])
|
|
imageId String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= DAFTAR INFORMASI PUBLIK ========================================= //
|
|
model DaftarInformasiPublik {
|
|
id String @id @default(cuid())
|
|
jenisInformasi String
|
|
deskripsi String
|
|
tanggal DateTime @db.Date
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
//=========================================PERMOHONAN INFORMASI PUBLIK========================= //
|
|
model PermohonanInformasiPublik {
|
|
id String @id @default(cuid())
|
|
nomor Int @default(autoincrement())
|
|
name String
|
|
nik String
|
|
notelp String
|
|
alamat String
|
|
email String
|
|
jenisInformasiDiminta JenisInformasiDiminta? @relation(fields: [jenisInformasiDimintaId], references: [id])
|
|
jenisInformasiDimintaId String?
|
|
caraMemperolehInformasi CaraMemperolehInformasi? @relation(fields: [caraMemperolehInformasiId], references: [id])
|
|
caraMemperolehInformasiId String?
|
|
caraMemperolehSalinanInformasi CaraMemperolehSalinanInformasi? @relation(fields: [caraMemperolehSalinanInformasiId], references: [id])
|
|
caraMemperolehSalinanInformasiId String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model JenisInformasiDiminta {
|
|
id String @id @default(cuid())
|
|
name String @unique
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
PermohonanInformasiPublik PermohonanInformasiPublik[]
|
|
}
|
|
|
|
model CaraMemperolehInformasi {
|
|
id String @id @default(cuid())
|
|
name String @unique
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
PermohonanInformasiPublik PermohonanInformasiPublik[]
|
|
}
|
|
|
|
model CaraMemperolehSalinanInformasi {
|
|
id String @id @default(cuid())
|
|
name String @unique
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
PermohonanInformasiPublik PermohonanInformasiPublik[]
|
|
}
|
|
|
|
//=========================================PERMOHONAN INFORMASI KEBERATAN PUBLIK========================= //
|
|
model FormulirPermohonanKeberatan {
|
|
id String @id @default(cuid())
|
|
name String
|
|
email String
|
|
notelp String
|
|
alasan String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= IKM ========================================= //
|
|
model IndeksKepuasanMasyarakat {
|
|
id String @id @default(cuid())
|
|
label String
|
|
kepuasan String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model GrafikBerdasarkanJenisKelamin {
|
|
id String @id @default(cuid())
|
|
perempuan String
|
|
laki String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model GrafikBerdasarkanResponden {
|
|
id String @id @default(cuid())
|
|
sangatbaik String
|
|
baik String
|
|
kurangbaik String
|
|
tidakbaik String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model GrafikBerdasarkanUmur {
|
|
id String @id @default(cuid())
|
|
remaja String
|
|
dewasa String
|
|
orangtua String
|
|
lansia String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= MENU DESA ========================================= //
|
|
// ========================================= PROFILE DESA ========================================= //
|
|
model SejarahDesa {
|
|
id String @id @default(cuid())
|
|
judul String @db.Text
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model VisiMisiDesa {
|
|
id String @id @default(cuid())
|
|
visi String @db.Text
|
|
misi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model LambangDesa {
|
|
id String @id @default(cuid())
|
|
judul String
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model MaskotDesa {
|
|
id String @id @default(cuid())
|
|
judul String
|
|
deskripsi String @db.Text
|
|
images ProfileDesaImage[]
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model ProfileDesaImage {
|
|
id String @id @default(cuid())
|
|
label String
|
|
image FileStorage @relation(fields: [imageId], references: [id])
|
|
imageId String
|
|
MaskotDesa MaskotDesa @relation(fields: [maskotDesaId], references: [id])
|
|
maskotDesaId String
|
|
}
|
|
|
|
model ProfilPerbekel {
|
|
id String @id @default(cuid())
|
|
biodata String @db.Text
|
|
pengalaman String @db.Text
|
|
pengalamanOrganisasi String @db.Text
|
|
programUnggulan 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 PerbekelDariMasaKeMasa {
|
|
id String @id @default(cuid())
|
|
nama String @db.Text
|
|
periode String @db.Text
|
|
image FileStorage? @relation(fields: [imageId], references: [id])
|
|
imageId String?
|
|
daerah String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= BERITA ========================================= //
|
|
model Berita {
|
|
id String @id @default(cuid())
|
|
judul String
|
|
deskripsi String
|
|
image FileStorage @relation(fields: [imageId], references: [id])
|
|
imageId String
|
|
content String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
kategoriBerita KategoriBerita? @relation(fields: [kategoriBeritaId], references: [id])
|
|
kategoriBeritaId String?
|
|
}
|
|
|
|
model KategoriBerita {
|
|
id String @id @default(cuid())
|
|
name String @unique
|
|
beritas Berita[]
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= POTENSI DESA ========================================= //
|
|
model PotensiDesa {
|
|
id String @id @default(cuid())
|
|
name String
|
|
deskripsi String
|
|
kategori KategoriPotensi? @relation(fields: [kategoriId], references: [id])
|
|
kategoriId String?
|
|
image FileStorage? @relation(fields: [imageId], references: [id])
|
|
imageId String?
|
|
content String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model KategoriPotensi {
|
|
id String @id @default(cuid())
|
|
nama String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
PotensiDesa PotensiDesa[]
|
|
}
|
|
|
|
// ========================================= PENGUMUMAN ========================================= //
|
|
model Pengumuman {
|
|
id String @id @default(cuid())
|
|
judul String
|
|
deskripsi String
|
|
content String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
CategoryPengumuman CategoryPengumuman? @relation(fields: [categoryPengumumanId], references: [id])
|
|
categoryPengumumanId String?
|
|
}
|
|
|
|
model CategoryPengumuman {
|
|
id String @id @default(cuid())
|
|
name String @unique
|
|
pengumumans Pengumuman[]
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= GALLERY ========================================= //
|
|
model GalleryFoto {
|
|
id String @id @default(cuid())
|
|
name String
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
imagesId String? @unique
|
|
imageGalleryFoto FileStorage? @relation(fields: [imagesId], references: [id])
|
|
}
|
|
|
|
model GalleryVideo {
|
|
id String @id @default(cuid())
|
|
name String
|
|
deskripsi String @db.Text
|
|
linkVideo String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= LAYANAN DESA ========================================= //
|
|
model PelayananSuratKeterangan {
|
|
id String @id @default(cuid())
|
|
name String
|
|
deskripsi String @db.Text
|
|
image FileStorage? @relation("PelayananSuratKeteranganImage", fields: [imageId], references: [id])
|
|
imageId String?
|
|
image2 FileStorage? @relation("PelayananSuratKeteranganImage2", fields: [image2Id], references: [id])
|
|
image2Id String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
AjukanPermohonan AjukanPermohonan[]
|
|
}
|
|
|
|
model PelayananTelunjukSaktiDesa {
|
|
id String @id @default(cuid())
|
|
name String
|
|
deskripsi String @db.Text
|
|
link String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model PelayananPerizinanBerusaha {
|
|
id String @id @default(cuid())
|
|
name String
|
|
deskripsi String @db.Text
|
|
link String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model PelayananPendudukNonPermanen {
|
|
id String @id @default(cuid())
|
|
name String
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model AjukanPermohonan {
|
|
id String @id @default(cuid())
|
|
nama String
|
|
nik String
|
|
alamat String
|
|
nomorKk String
|
|
kategori PelayananSuratKeterangan @relation(fields: [kategoriId], references: [id])
|
|
kategoriId String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= PENGHARGAAN ========================================= //
|
|
model Penghargaan {
|
|
id String @id @default(cuid())
|
|
name String
|
|
juara 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)
|
|
}
|
|
|
|
// ========================================= MENU KESEHATAN ========================================= //
|
|
// ========================================= DATA KESEHATAN WARGA ========================================= //
|
|
|
|
// ========================================= FASILITAS KESEHATAN ========================================= //
|
|
model FasilitasKesehatan {
|
|
id String @id @default(cuid())
|
|
name String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
informasiumum InformasiUmum @relation(fields: [informasiUmumId], references: [id])
|
|
informasiUmumId String
|
|
layananunggulan LayananUnggulan @relation(fields: [layananUnggulanId], references: [id])
|
|
layananUnggulanId String
|
|
dokterdantenagamedis DokterdanTenagaMedis[] @relation("Dokter")
|
|
fasilitaspendukung FasilitasPendukung @relation(fields: [fasilitasPendukungId], references: [id])
|
|
fasilitasPendukungId String
|
|
prosedurpendaftaran ProsedurPendaftaran @relation(fields: [prosedurPendaftaranId], references: [id])
|
|
prosedurPendaftaranId String
|
|
tarifdanlayanan TarifDanLayanan[] @relation("Tarif")
|
|
}
|
|
|
|
model InformasiUmum {
|
|
id String @id @default(cuid())
|
|
fasilitas String
|
|
alamat String
|
|
jamOperasional String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
FasilitasKesehatan FasilitasKesehatan[]
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model LayananUnggulan {
|
|
id String @id @default(cuid())
|
|
content String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
FasilitasKesehatan FasilitasKesehatan[]
|
|
}
|
|
|
|
model DokterdanTenagaMedis {
|
|
id String @id @default(cuid())
|
|
name String
|
|
specialist String
|
|
jadwal String
|
|
jadwalLibur String
|
|
jamBukaOperasional String
|
|
jamTutupOperasional String
|
|
jamBukaLibur String
|
|
jamTutupLibur String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
FasilitasKesehatan FasilitasKesehatan[] @relation("Dokter")
|
|
}
|
|
|
|
model FasilitasPendukung {
|
|
id String @id @default(cuid())
|
|
content String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
FasilitasKesehatan FasilitasKesehatan[]
|
|
}
|
|
|
|
model ProsedurPendaftaran {
|
|
id String @id @default(cuid())
|
|
content String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
FasilitasKesehatan FasilitasKesehatan[]
|
|
}
|
|
|
|
model TarifDanLayanan {
|
|
id String @id @default(cuid())
|
|
layanan String
|
|
tarif String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
FasilitasKesehatan FasilitasKesehatan[] @relation("Tarif")
|
|
}
|
|
|
|
// ========================================= JADWAL KEGIATAN ========================================= //
|
|
model JadwalKegiatan {
|
|
id String @id @default(cuid())
|
|
content String
|
|
informasijadwalkegiatan InformasiJadwalKegiatan @relation(fields: [informasiJadwalKegiatanId], references: [id])
|
|
informasiJadwalKegiatanId String
|
|
deskripsijadwalkegiatan DeskripsiJadwalKegiatan @relation(fields: [deskripsiJadwalKegiatanId], references: [id])
|
|
deskripsiJadwalKegiatanId String
|
|
layananjadwalkegiatan LayananJadwalKegiatan @relation(fields: [layananJadwalKegiatanId], references: [id])
|
|
layananJadwalKegiatanId String
|
|
syaratketentuanjadwalkegiatan SyaratKetentuanJadwalKegiatan @relation(fields: [syaratKetentuanJadwalKegiatanId], references: [id])
|
|
syaratKetentuanJadwalKegiatanId String
|
|
dokumenjadwalkegiatan DokumenJadwalKegiatan @relation(fields: [dokumenJadwalKegiatanId], references: [id])
|
|
dokumenJadwalKegiatanId String
|
|
pendaftaranjadwalkegiatan PendaftaranJadwalKegiatan? @relation(fields: [pendaftaranJadwalKegiatanId], references: [id])
|
|
pendaftaranJadwalKegiatanId String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model InformasiJadwalKegiatan {
|
|
id String @id @default(cuid())
|
|
name String
|
|
tanggal String
|
|
waktu String
|
|
lokasi String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
JadwalKegiatan JadwalKegiatan[]
|
|
}
|
|
|
|
model DeskripsiJadwalKegiatan {
|
|
id String @id @default(cuid())
|
|
deskripsi String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
JadwalKegiatan JadwalKegiatan[]
|
|
}
|
|
|
|
model LayananJadwalKegiatan {
|
|
id String @id @default(cuid())
|
|
content String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
|
|
JadwalKegiatan JadwalKegiatan[]
|
|
}
|
|
|
|
model SyaratKetentuanJadwalKegiatan {
|
|
id String @id @default(cuid())
|
|
content String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
|
|
JadwalKegiatan JadwalKegiatan[]
|
|
}
|
|
|
|
model DokumenJadwalKegiatan {
|
|
id String @id @default(cuid())
|
|
content String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
JadwalKegiatan JadwalKegiatan[]
|
|
}
|
|
|
|
model PendaftaranJadwalKegiatan {
|
|
id String @id @default(cuid())
|
|
name String
|
|
tanggal String
|
|
namaOrangtua String
|
|
nomor String
|
|
alamat String
|
|
catatan String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
JadwalKegiatan JadwalKegiatan[]
|
|
}
|
|
|
|
// ========================================= PERSENTASE KELAHIRAN & KEMATIAN ========================================= //
|
|
model DataKematian_Kelahiran {
|
|
id String @id @default(cuid())
|
|
kematian Kematian @relation(fields: [kematianId], references: [id])
|
|
kematianId String
|
|
kelahiran Kelahiran @relation(fields: [kelahiranId], references: [id])
|
|
kelahiranId String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model Kelahiran {
|
|
id String @id @default(cuid())
|
|
nama String
|
|
tanggal DateTime
|
|
jenisKelamin String
|
|
alamat String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
DataKematian_Kelahiran DataKematian_Kelahiran[]
|
|
}
|
|
|
|
model Kematian {
|
|
id String @id @default(cuid())
|
|
nama String
|
|
tanggal DateTime
|
|
jenisKelamin String
|
|
alamat String
|
|
penyebab String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
DataKematian_Kelahiran DataKematian_Kelahiran[]
|
|
}
|
|
|
|
// ========================================= GRAFIK KEPUASAN ========================================= //
|
|
model GrafikKepuasan {
|
|
id String @id @default(cuid())
|
|
nama String
|
|
tanggal DateTime
|
|
jenisKelamin String
|
|
alamat String
|
|
penyakit String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= ARTIKEL KESEHATAN ========================================= //
|
|
model ArtikelKesehatan {
|
|
id String @id @default(cuid())
|
|
title String
|
|
content String
|
|
image FileStorage? @relation(fields: [imageId], references: [id])
|
|
imageId String?
|
|
introductionId String
|
|
introduction Introduction @relation(fields: [introductionId], references: [id])
|
|
symptom Symptom @relation(fields: [symptomId], references: [id])
|
|
symptomId String
|
|
prevention Prevention @relation(fields: [preventionId], references: [id])
|
|
preventionId String
|
|
firstaid FirstAid @relation(fields: [firstAidId], references: [id])
|
|
firstAidId String
|
|
mythvsfact MythVsFact @relation(fields: [mythVsFactId], references: [id])
|
|
mythVsFactId String
|
|
doctorsign DoctorSign @relation(fields: [doctorSignId], references: [id])
|
|
doctorSignId String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model Introduction {
|
|
id String @id @default(cuid())
|
|
content String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
ArtikelKesehatan ArtikelKesehatan[]
|
|
}
|
|
|
|
model Symptom {
|
|
id String @id @default(cuid())
|
|
title String
|
|
content String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
ArtikelKesehatan ArtikelKesehatan[]
|
|
}
|
|
|
|
model Prevention {
|
|
id String @id @default(cuid())
|
|
title String
|
|
content String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
|
|
ArtikelKesehatan ArtikelKesehatan[]
|
|
}
|
|
|
|
model FirstAid {
|
|
id String @id @default(cuid())
|
|
title String
|
|
content String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
|
|
ArtikelKesehatan ArtikelKesehatan[]
|
|
}
|
|
|
|
model MythVsFact {
|
|
id String @id @default(cuid())
|
|
title String
|
|
mitos String
|
|
fakta String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
|
|
ArtikelKesehatan ArtikelKesehatan[]
|
|
}
|
|
|
|
model DoctorSign {
|
|
id String @id @default(cuid())
|
|
content String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
|
|
ArtikelKesehatan ArtikelKesehatan[]
|
|
}
|
|
|
|
// ========================================= POSYANDU ========================================= //
|
|
model Posyandu {
|
|
id String @id @default(cuid())
|
|
name String
|
|
nomor String
|
|
deskripsi String
|
|
jadwalPelayanan String
|
|
image FileStorage @relation(fields: [imageId], references: [id])
|
|
imageId String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= PUSKESMAS ========================================= //
|
|
model Puskesmas {
|
|
id String @id @default(cuid())
|
|
name String
|
|
alamat String
|
|
jam JamOperasional @relation(fields: [jamId], references: [id])
|
|
jamId String
|
|
image FileStorage @relation(fields: [imageId], references: [id])
|
|
imageId String
|
|
kontak KontakPuskesmas @relation(fields: [kontakId], references: [id])
|
|
kontakId String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model JamOperasional {
|
|
id String @id @default(cuid())
|
|
workDays String
|
|
weekDays String
|
|
holiday String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
Puskesmas Puskesmas[]
|
|
}
|
|
|
|
model KontakPuskesmas {
|
|
id String @id @default(cuid())
|
|
kontakPuskesmas String
|
|
email String
|
|
facebook String
|
|
kontakUGD String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
Puskesmas Puskesmas[]
|
|
}
|
|
|
|
// ========================================= PROGRAM KESSEHATAN ========================================= //
|
|
model ProgramKesehatan {
|
|
id String @id @default(cuid())
|
|
name String
|
|
deskripsiSingkat String
|
|
deskripsi String
|
|
image FileStorage @relation(fields: [imageId], references: [id])
|
|
imageId String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= PENANGANAN DARURAT ========================================= //
|
|
model PenangananDarurat {
|
|
id String @id @default(cuid())
|
|
name String
|
|
deskripsi String
|
|
image FileStorage @relation(fields: [imageId], references: [id])
|
|
imageId String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= KONTAK DARURAT ========================================= //
|
|
model KontakDarurat {
|
|
id String @id @default(cuid())
|
|
name String
|
|
deskripsi String
|
|
image FileStorage @relation(fields: [imageId], references: [id])
|
|
imageId String
|
|
whatsapp String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= INFO WABAH PENYAKIT ========================================= //
|
|
model InfoWabahPenyakit {
|
|
id String @id @default(cuid())
|
|
name String
|
|
deskripsiSingkat String
|
|
deskripsiLengkap String
|
|
image FileStorage @relation(fields: [imageId], references: [id])
|
|
imageId String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= MENU KEAMANAN ========================================= //
|
|
// ========================================= KEAMANAN LINGKUNGAN ========================================= //
|
|
model KeamananLingkungan {
|
|
id String @id @default(cuid())
|
|
name String @db.Text
|
|
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)
|
|
}
|
|
|
|
// ========================================= POLSEK TERDEKAT ========================================= //
|
|
model PolsekTerdekat {
|
|
id String @id @default(uuid())
|
|
nama String
|
|
jarakKeDesa String
|
|
alamat String
|
|
nomorTelepon String
|
|
jamOperasional String
|
|
embedMapUrl String
|
|
namaTempatMaps String
|
|
alamatMaps String
|
|
linkPetunjukArah String
|
|
layananPolsek LayananPolsek @relation(fields: [layananPolsekId], references: [id])
|
|
layananPolsekId String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model LayananPolsek {
|
|
id String @id @default(uuid())
|
|
nama String // contoh: "Pelayanan SKCK", "Laporan Kriminal"
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime?
|
|
isActive Boolean @default(true)
|
|
PolsekTerdekat PolsekTerdekat[]
|
|
}
|
|
|
|
// ========================================= KONTAK DARURAT ========================================= //
|
|
model KontakDaruratKeamanan {
|
|
id String @id @default(uuid())
|
|
nama String
|
|
icon String
|
|
kategori KontakItem @relation(fields: [kategoriId], references: [id])
|
|
kategoriId String
|
|
kontakItems KontakDaruratToItem[]
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime?
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model KontakItem {
|
|
id String @id @default(uuid())
|
|
nama String
|
|
nomorTelepon String
|
|
icon String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
KontakDaruratToItem KontakDaruratToItem[]
|
|
KontakDaruratKeamanan KontakDaruratKeamanan[]
|
|
}
|
|
|
|
model KontakDaruratToItem {
|
|
id String @id @default(uuid())
|
|
kontakDaruratId String
|
|
kontakItemId String
|
|
kontakDarurat KontakDaruratKeamanan @relation(fields: [kontakDaruratId], references: [id])
|
|
kontakItem KontakItem @relation(fields: [kontakItemId], references: [id])
|
|
createdAt DateTime @default(now())
|
|
}
|
|
|
|
// ========================================= PENCEGAHAN KRIMINALITAS ========================================= //
|
|
model PencegahanKriminalitas {
|
|
id String @id @default(cuid())
|
|
judul String
|
|
deskripsi String
|
|
deskripsiSingkat String
|
|
linkVideo String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= LAPORAN PUBLIK ========================================= //
|
|
model LaporanPublik {
|
|
id String @id @default(cuid())
|
|
judul String
|
|
lokasi String
|
|
tanggalWaktu DateTime
|
|
status StatusLaporan @default(Proses)
|
|
penanganan PenangananLaporanPublik[]
|
|
kronologi String? // Optional, bisa diisi detail kronologi
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model PenangananLaporanPublik {
|
|
id String @id @default(cuid())
|
|
laporanId String
|
|
deskripsi String
|
|
laporan LaporanPublik @relation(fields: [laporanId], references: [id], onDelete: Cascade)
|
|
}
|
|
|
|
enum StatusLaporan {
|
|
Selesai
|
|
Proses
|
|
Gagal
|
|
}
|
|
|
|
model Pelapor {
|
|
id String @id @default(cuid())
|
|
nama String
|
|
alamat String
|
|
nomorTelepon String
|
|
image FileStorage @relation(fields: [imageId], references: [id])
|
|
imageId String
|
|
}
|
|
|
|
// ========================================= TIPS KEAMANAN ========================================= //
|
|
model MenuTipsKeamanan {
|
|
id String @id @default(cuid())
|
|
judul String
|
|
deskripsi String
|
|
image FileStorage? @relation(fields: [imageId], references: [id])
|
|
imageId String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= MENU EKONOMI ========================================= //
|
|
// ========================================= PASAR DESA ========================================= //
|
|
model PasarDesa {
|
|
id String @id @default(uuid())
|
|
nama String
|
|
image FileStorage? @relation(fields: [imageId], references: [id])
|
|
imageId String?
|
|
harga Int
|
|
rating Float
|
|
alamatUsaha String
|
|
kontak String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
kategoriProduk KategoriProduk @relation(fields: [kategoriProdukId], references: [id])
|
|
kategoriProdukId String
|
|
KategoriToPasar KategoriToPasar[]
|
|
}
|
|
|
|
model KategoriProduk {
|
|
id String @id @default(uuid())
|
|
nama String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
KategoriToPasar KategoriToPasar[]
|
|
PasarDesa PasarDesa[]
|
|
}
|
|
|
|
model KategoriToPasar {
|
|
id String @id @default(uuid())
|
|
kategori KategoriProduk @relation(fields: [kategoriId], references: [id])
|
|
kategoriId String
|
|
pasarDesa PasarDesa @relation(fields: [pasarDesaId], references: [id])
|
|
pasarDesaId String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= LOWONGAN KERJA LOKAL ========================================= //
|
|
model LowonganPekerjaan {
|
|
id String @id @default(uuid())
|
|
posisi String
|
|
namaPerusahaan String
|
|
lokasi String
|
|
tipePekerjaan String
|
|
gaji String
|
|
deskripsi String
|
|
kualifikasi String
|
|
notelp String
|
|
tanggalPosting DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
}
|
|
|
|
// ========================================= STRUKTUR ORGANISASI ========================================= //
|
|
|
|
model StrukturBumDes {
|
|
id String @id @default(cuid())
|
|
name 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)
|
|
PosisiOrganisasiBumDes PosisiOrganisasiBumDes? @relation(fields: [posisiOrganisasiBumDesId], references: [id])
|
|
posisiOrganisasiBumDesId String?
|
|
PegawaiBumDes PegawaiBumDes? @relation(fields: [pegawaiBumDesId], references: [id])
|
|
pegawaiBumDesId String?
|
|
}
|
|
|
|
model PosisiOrganisasiBumDes {
|
|
id String @id @default(cuid())
|
|
nama String @db.VarChar(100)
|
|
deskripsi String? @db.Text
|
|
hierarki Int
|
|
pegawai PegawaiBumDes[]
|
|
strukturOrganisasi StrukturBumDes[] // Relasi balik
|
|
parentId String?
|
|
isActive Boolean @default(true)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
parent PosisiOrganisasiBumDes? @relation("Parent", fields: [parentId], references: [id])
|
|
children PosisiOrganisasiBumDes[] @relation("Parent")
|
|
StrukturOrganisasiBumDes StrukturOrganisasiBumDes[]
|
|
}
|
|
|
|
model PegawaiBumDes {
|
|
id String @id @default(cuid())
|
|
namaLengkap String @db.VarChar(255)
|
|
gelarAkademik String? @db.VarChar(100)
|
|
image FileStorage? @relation(fields: [imageId], references: [id])
|
|
imageId String?
|
|
tanggalMasuk DateTime? @db.Date
|
|
email String? @unique @db.VarChar(255)
|
|
telepon String? @db.VarChar(20)
|
|
alamat String? @db.Text
|
|
posisiId String @db.VarChar(50)
|
|
isActive Boolean @default(true)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
posisi PosisiOrganisasiBumDes @relation(fields: [posisiId], references: [id])
|
|
strukturOrganisasi StrukturBumDes[] // Relasi balik
|
|
StrukturOrganisasiBumDes StrukturOrganisasiBumDes[]
|
|
}
|
|
|
|
model StrukturOrganisasiBumDes {
|
|
id String @id @default(uuid())
|
|
posisiOrganisasiId String @db.VarChar(50)
|
|
pegawaiId String
|
|
hubunganOrganisasiId String
|
|
posisiOrganisasi PosisiOrganisasiBumDes @relation(fields: [posisiOrganisasiId], references: [id])
|
|
pegawai PegawaiBumDes @relation(fields: [pegawaiId], references: [id])
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime?
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= PROGRAM KEMISKINAN ========================================= //
|
|
model ProgramKemiskinan {
|
|
id String @id @default(uuid())
|
|
nama String
|
|
deskripsi String
|
|
icon String
|
|
isActive Boolean @default(true)
|
|
statistikId String? @unique
|
|
statistik StatistikKemiskinan? @relation(fields: [statistikId], references: [id])
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model StatistikKemiskinan {
|
|
id String @id @default(uuid())
|
|
tahun Int @unique
|
|
jumlah Int
|
|
programKemiskinan ProgramKemiskinan?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
// ========================================= JUMLAH PENDUDUK USIA KERJA YANG MENGANGGUR ========================================= //
|
|
model GrafikMenganggurBerdasarkanUsia {
|
|
id String @id @default(cuid())
|
|
usia18_25 String
|
|
usia26_35 String
|
|
usia36_45 String
|
|
usia46_keatas String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model GrafikMenganggurBerdasarkanPendidikan {
|
|
id String @id @default(cuid())
|
|
SD String
|
|
SMP String
|
|
SMA String
|
|
D3 String
|
|
S1 String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= JUMLAH PENDUDUK MISKIN ========================================= //
|
|
model GrafikJumlahPendudukMiskin {
|
|
id String @id @default(uuid()) @db.Uuid // Menggunakan UUID sebagai primary key
|
|
year Int @unique // Tahun data (e.g., 2024, 2025)
|
|
totalPoorPopulation Int // Jumlah penduduk miskin (e.g., 4800000)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= SEKTOR UNGGULAN DESA ========================================= //
|
|
model SektorUnggulanDesa {
|
|
id String @id @default(uuid()) @db.Uuid // Menggunakan UUID sebagai primary key
|
|
name String @unique @db.VarChar(100) // Nama sektor (e.g., "Sektor Pertanian", "Sektor Peternakan")
|
|
description String? @db.Text // Deskripsi lengkap tentang sektor
|
|
value Float? // Nilai kuantitatif sektor (misalnya, kontribusi PDB, jumlah produksi, dll.)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= DEMOGRAFI PEKERJAAN ========================================= //
|
|
model DataDemografiPekerjaan {
|
|
id String @id @default(cuid())
|
|
pekerjaan String
|
|
lakiLaki Int
|
|
perempuan Int
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= JUMLAH PENGANGGURAN ========================================= //
|
|
model DetailDataPengangguran {
|
|
id String @id @default(uuid()) @db.Uuid
|
|
month String @db.VarChar(20)
|
|
year Int
|
|
totalUnemployment Int
|
|
educatedUnemployment Int
|
|
uneducatedUnemployment Int
|
|
percentageChange Float?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
|
|
@@unique([month, year])
|
|
}
|
|
|
|
// ========================================= PADESA PENDAPATAN ASLI DESA ========================================= //
|
|
model ApbDesa {
|
|
id String @id @default(uuid())
|
|
tahun Int
|
|
pembiayaan Pembiayaan[] @relation("ApbDesaPembiayaan")
|
|
belanja Belanja[] @relation("ApbDesaBelanja")
|
|
pendapatan Pendapatan[] @relation("ApbDesaPendapatan")
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model Pendapatan {
|
|
id String @id @default(uuid())
|
|
name String
|
|
value Int
|
|
ApbDesa ApbDesa[] @relation("ApbDesaPendapatan")
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model Belanja {
|
|
id String @id @default(uuid())
|
|
name String
|
|
value Int
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
ApbDesa ApbDesa[] @relation("ApbDesaBelanja")
|
|
}
|
|
|
|
model Pembiayaan {
|
|
id String @id @default(uuid())
|
|
name String
|
|
value Int
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
ApbDesa ApbDesa[] @relation("ApbDesaPembiayaan")
|
|
}
|
|
|
|
// ========================================= 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)
|
|
}
|
|
|
|
// ========================================= PROGRAM KREATIF ========================================= //
|
|
model ProgramKreatif {
|
|
id String @id @default(cuid())
|
|
name String
|
|
slug String @db.Text //deskripsi singkat
|
|
deskripsi String @db.Text //deskripsi panjang
|
|
icon String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= KOLABORASI INOVASI ========================================= //
|
|
model KolaborasiInovasi {
|
|
id String @id @default(cuid())
|
|
name String
|
|
tahun Int
|
|
slug String @db.Text //deskripsi singkat
|
|
deskripsi String @db.Text //deskripsi panjang
|
|
kolaborator String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model MitraKolaborasi {
|
|
id String @id @default(cuid())
|
|
name String
|
|
image FileStorage? @relation(fields: [imageId], references: [id])
|
|
imageId String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= INFO TEKHNOLOGI TEPAT GUNA ========================================= //
|
|
model InfoTekno {
|
|
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)
|
|
}
|
|
|
|
// ========================================= 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)
|
|
}
|
|
|
|
// ========================================= LAYANAN ONLINE DESA ========================================= //
|
|
model AdministrasiOnline {
|
|
id String @id @default(cuid())
|
|
name String
|
|
alamat String
|
|
nomorTelepon String
|
|
jenisLayanan JenisLayanan @relation(fields: [jenisLayananId], references: [id])
|
|
jenisLayananId String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model JenisLayanan {
|
|
id String @id @default(uuid())
|
|
nama String
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
AdministrasiOnline AdministrasiOnline[]
|
|
}
|
|
|
|
model PengaduanMasyarakat {
|
|
id String @id @default(cuid())
|
|
name String
|
|
email String
|
|
nomorTelepon String
|
|
nik String
|
|
judulPengaduan String
|
|
lokasiKejadian String
|
|
image FileStorage @relation(fields: [imageId], references: [id])
|
|
imageId String
|
|
deskripsiPengaduan String @db.Text
|
|
jenisPengaduan JenisPengaduan @relation(fields: [jenisPengaduanId], references: [id])
|
|
jenisPengaduanId String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model JenisPengaduan {
|
|
id String @id @default(uuid())
|
|
nama String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
PengaduanMasyarakat PengaduanMasyarakat[]
|
|
}
|
|
|
|
// ========================================= LINGKUNGAN ========================================= //
|
|
// ========================================= PENGELOLAAN SAMPAH ========================================= //
|
|
model PengelolaanSampah {
|
|
id String @id @default(cuid())
|
|
name String
|
|
icon String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model KeteranganBankSampahTerdekat {
|
|
id String @id @default(cuid())
|
|
name String
|
|
alamat String
|
|
namaTempatMaps String
|
|
linkPetunjukArah String
|
|
lat Float
|
|
lng Float
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= PORGRAM PENGHIJAUAN ========================================= //
|
|
model ProgramPenghijauan {
|
|
id String @id @default(cuid())
|
|
name String
|
|
judul String @db.Text //deskripsi singkat
|
|
deskripsi String @db.Text //deskripsi panjang
|
|
icon String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= DATA LINGKUNGAN DESA ========================================= //
|
|
model DataLingkunganDesa {
|
|
id String @id @default(cuid())
|
|
name String
|
|
jumlah String
|
|
deskripsi String @db.Text //deskripsi panjang
|
|
icon String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= GOTONG ROYONG ========================================= //
|
|
model KegiatanDesa {
|
|
id String @id @default(uuid())
|
|
judul String
|
|
deskripsiSingkat String
|
|
deskripsiLengkap String
|
|
tanggal DateTime
|
|
lokasi String
|
|
partisipan Int
|
|
image FileStorage @relation(fields: [imageId], references: [id])
|
|
imageId String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
kategoriKegiatan KategoriKegiatan @relation(fields: [kategoriKegiatanId], references: [id])
|
|
kategoriKegiatanId String
|
|
}
|
|
|
|
model KategoriKegiatan {
|
|
id String @id @default(cuid())
|
|
nama String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
KegiatanDesa KegiatanDesa[]
|
|
}
|
|
|
|
// ========================================= EDUKASI LINGKUNGAN ========================================= //
|
|
model TujuanEdukasiLingkungan {
|
|
id String @id @default(cuid())
|
|
judul String @db.Text
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model MateriEdukasiLingkungan {
|
|
id String @id @default(cuid())
|
|
judul String @db.Text
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model ContohEdukasiLingkungan {
|
|
id String @id @default(cuid())
|
|
judul String @db.Text
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= KONSERVASI ADAT BALI ========================================= //
|
|
model FilosofiTriHita {
|
|
id String @id @default(cuid())
|
|
judul String @db.Text
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model BentukKonservasiBerdasarkanAdat {
|
|
id String @id @default(cuid())
|
|
judul String @db.Text
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model NilaiKonservasiAdat {
|
|
id String @id @default(cuid())
|
|
judul String @db.Text
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= MENU PENDIDIKAN ========================================= //
|
|
// ========================================= INFO SEKOLAH & PAUD ========================================= //
|
|
model JenjangPendidikan {
|
|
id String @id @default(cuid())
|
|
nama String // TK/PAUD, SD, SMP, SMA/SMK
|
|
lembagas Lembaga[] // Relasi ke lembaga
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model Lembaga {
|
|
id String @id @default(cuid())
|
|
nama String
|
|
jenjangPendidikan JenjangPendidikan @relation(fields: [jenjangId], references: [id])
|
|
jenjangId String
|
|
siswa Siswa[]
|
|
pengajar Pengajar[]
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model Siswa {
|
|
id String @id @default(cuid())
|
|
nama String
|
|
lembaga Lembaga @relation(fields: [lembagaId], references: [id])
|
|
lembagaId String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model Pengajar {
|
|
id String @id @default(cuid())
|
|
nama String
|
|
lembaga Lembaga @relation(fields: [lembagaId], references: [id])
|
|
lembagaId String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= BEASISWA DESA ========================================= //
|
|
model KeunggulanProgram {
|
|
id String @id @default(cuid())
|
|
judul String
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model BeasiswaPendaftar {
|
|
id String @id @default(cuid())
|
|
namaLengkap String
|
|
nis String?
|
|
kelas String?
|
|
jenisKelamin JenisKelamin
|
|
alamatDomisili String?
|
|
tempatLahir String
|
|
tanggalLahir DateTime
|
|
namaOrtu String?
|
|
nik String @unique
|
|
pekerjaanOrtu String?
|
|
penghasilan String?
|
|
noHp String
|
|
kewarganegaraan String?
|
|
agama Agama?
|
|
alamatKTP String?
|
|
email String? @unique
|
|
statusPernikahan StatusPernikahan?
|
|
ukuranBaju UkuranBaju?
|
|
isActive Boolean @default(true)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
enum JenisKelamin {
|
|
LAKI_LAKI
|
|
PEREMPUAN
|
|
}
|
|
|
|
enum Agama {
|
|
ISLAM
|
|
KRISTEN_PROTESTAN
|
|
KRISTEN_KATOLIK
|
|
HINDU
|
|
BUDDHA
|
|
KONGHUCU
|
|
LAINNYA
|
|
}
|
|
|
|
enum StatusPernikahan {
|
|
BELUM_MENIKAH
|
|
MENIKAH
|
|
JANDA_DUDA
|
|
}
|
|
|
|
enum UkuranBaju {
|
|
S
|
|
M
|
|
L
|
|
XL
|
|
XXL
|
|
LAINNYA
|
|
}
|
|
|
|
// ========================================= PROGRAM PENDIDIKAN ANAK ========================================= //
|
|
model TujuanProgram {
|
|
id String @id @default(cuid())
|
|
judul String
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model ProgramUnggulan {
|
|
id String @id @default(cuid())
|
|
judul String
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= BIMBINGAN BELAJAR DESA ========================================= //
|
|
model TujuanBimbinganBelajarDesa {
|
|
id String @id @default(cuid())
|
|
judul String
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model LokasiJadwalBimbinganBelajarDesa {
|
|
id String @id @default(cuid())
|
|
judul String
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model FasilitasBimbinganBelajarDesa {
|
|
id String @id @default(cuid())
|
|
judul String
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= PENDIDIKAN NON FORMAL ========================================= //
|
|
model TujuanPendidikanNonFormal {
|
|
id String @id @default(cuid())
|
|
judul String
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model TempatKegiatan {
|
|
id String @id @default(cuid())
|
|
judul String
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
model JenisProgramYangDiselenggarakan {
|
|
id String @id @default(cuid())
|
|
judul String
|
|
deskripsi String @db.Text
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
// ========================================= PERPUSTAKAAN ========================================= //
|
|
model DataPerpustakaan {
|
|
id String @id @default(cuid())
|
|
judul String
|
|
deskripsi String @db.Text
|
|
kategori KategoriBuku @relation(fields: [kategoriId], references: [id])
|
|
kategoriId String
|
|
image FileStorage @relation(fields: [imageId], references: [id])
|
|
imageId String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
|
|
// relasi baru ke peminjaman
|
|
peminjamanBuku PeminjamanBuku[]
|
|
}
|
|
|
|
model KategoriBuku {
|
|
id String @id @default(cuid())
|
|
name String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
DataPerpustakaan DataPerpustakaan[]
|
|
}
|
|
|
|
model PeminjamanBuku {
|
|
id String @id @default(cuid())
|
|
nama String
|
|
noTelp String
|
|
alamat String
|
|
bukuId String
|
|
tanggalPinjam DateTime @default(now())
|
|
batasKembali DateTime // tenggat waktu pengembalian
|
|
tanggalKembali DateTime? // diisi saat dikembalikan
|
|
status StatusPeminjaman @default(Dipinjam)
|
|
catatan String? // opsional, misal: kondisi buku
|
|
buku DataPerpustakaan @relation(fields: [bukuId], references: [id])
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime @default(now())
|
|
isActive Boolean @default(true)
|
|
}
|
|
|
|
enum StatusPeminjaman {
|
|
Dipinjam
|
|
Dikembalikan
|
|
Terlambat
|
|
Dibatalkan
|
|
}
|
|
|
|
// ========================================= USER ========================================= //
|
|
|
|
model User {
|
|
id String @id @default(cuid())
|
|
username String
|
|
nomor String @unique
|
|
roleId String @default("2")
|
|
isActive Boolean @default(false)
|
|
sessionInvalid Boolean @default(false)
|
|
lastLogin DateTime?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @default(now()) @updatedAt
|
|
permissions Json?
|
|
sessions UserSession[] // ✅ Relasi one-to-many
|
|
role Role @relation(fields: [roleId], references: [id])
|
|
menuAccesses UserMenuAccess[]
|
|
|
|
@@map("users")
|
|
}
|
|
|
|
model Role {
|
|
id String @id @default(cuid())
|
|
name String @unique // ADMIN_DESA, ADMIN_KESEHATAN, ADMIN_SEKOLAH
|
|
description String?
|
|
permissions Json?
|
|
isActive Boolean @default(true)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
deletedAt DateTime?
|
|
users User[]
|
|
|
|
@@map("roles")
|
|
}
|
|
|
|
model KodeOtp {
|
|
id String @id @default(cuid())
|
|
isActive Boolean @default(true)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
nomor String
|
|
otp Int
|
|
}
|
|
|
|
model UserSession {
|
|
id String @id @default(cuid())
|
|
token String @db.Text // ✅ JWT bisa panjang
|
|
expiresAt DateTime // ✅ Ubah jadi expiresAt (konsisten)
|
|
active Boolean @default(true)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @default(now()) @updatedAt
|
|
|
|
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
userId String // ✅ HAPUS @unique - user bisa punya multiple sessions
|
|
|
|
@@index([userId]) // ✅ Index untuk query cepat
|
|
@@index([token]) // ✅ Index untuk verify cepat
|
|
@@map("user_sessions")
|
|
}
|
|
|
|
model UserMenuAccess {
|
|
id String @id @default(cuid())
|
|
userId String
|
|
menuId String // ID menu (misal: "Landing Page", "Kesehatan")
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
user User @relation(fields: [userId], references: [id])
|
|
|
|
@@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)
|
|
}
|