generator client { provider = "prisma-client-js" output = "../generated/prisma" } datasource db { provider = "postgresql" url = env("DATABASE_URL") } model Role { id String @id @default(cuid()) name String permissions Json? isActive Boolean @default(true) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt User User[] } model User { id String @id @default(cuid()) Role Role? @relation(fields: [roleId], references: [id]) roleId String? name String? email String? @unique password String? phone String? @unique isActive Boolean @default(true) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt ApiKey ApiKey[] HistoryPengaduan HistoryPengaduan[] HistoryPelayanan HistoryPelayanan[] } model ApiKey { id String @id @default(cuid()) User User? @relation(fields: [userId], references: [id]) userId String name String key String @unique @db.Text description String? expiredAt DateTime? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model Credential { id String @id @default(cuid()) name String? value String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model CategoryPengaduan { id String @id @default(cuid()) name String isActive Boolean @default(true) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt Pengaduan Pengaduan[] } model Pengaduan { id String @id @default(cuid()) CategoryPengaduan CategoryPengaduan @relation(fields: [idCategory], references: [id]) idCategory String Warga Warga @relation(fields: [idWarga], references: [id]) idWarga String noPengaduan String title String? detail String? location String? image String? keterangan String? status StatusPengaduan @default(antrian) isActive Boolean @default(true) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt HistoryPengaduan HistoryPengaduan[] } model HistoryPengaduan { id String @id @default(cuid()) Pengaduan Pengaduan @relation(fields: [idPengaduan], references: [id]) idPengaduan String User User? @relation(fields: [idUser], references: [id]) idUser String? deskripsi String? status StatusPengaduan @default(antrian) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model Warga { id String @id @default(cuid()) name String? phone String? @unique isActive Boolean @default(true) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt Pengaduan Pengaduan[] PelayananAjuan PelayananAjuan[] SuratPelayanan SuratPelayanan[] } model CategoryPelayanan { id String @id @default(cuid()) name String syaratDokumen Json[] dataText String[] @default([]) dataPelengkap Json[] @default([]) isActive Boolean @default(true) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt PelayananAjuan PelayananAjuan[] SyaratDokumenPelayanan SyaratDokumenPelayanan[] DataTextPelayanan DataTextPelayanan[] SuratPelayanan SuratPelayanan[] } model PelayananAjuan { id String @id @default(cuid()) Warga Warga @relation(fields: [idWarga], references: [id]) idWarga String CategoryPelayanan CategoryPelayanan @relation(fields: [idCategory], references: [id]) idCategory String noPengajuan String status StatusPengaduan @default(antrian) isActive Boolean @default(true) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt HistoryPelayanan HistoryPelayanan[] SyaratDokumenPelayanan SyaratDokumenPelayanan[] DataTextPelayanan DataTextPelayanan[] SuratPelayanan SuratPelayanan[] } model HistoryPelayanan { id String @id @default(cuid()) PelayananAjuan PelayananAjuan @relation(fields: [idPengajuanLayanan], references: [id]) idPengajuanLayanan String User User? @relation(fields: [idUser], references: [id]) idUser String? deskripsi String? keteranganAlasan String? status StatusPengaduan @default(antrian) isActive Boolean @default(true) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model SyaratDokumenPelayanan { id String @id @default(cuid()) PelayananAjuan PelayananAjuan @relation(fields: [idPengajuanLayanan], references: [id]) idPengajuanLayanan String CategoryPelayanan CategoryPelayanan @relation(fields: [idCategory], references: [id]) idCategory String jenis String value String isActive Boolean @default(true) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model DataTextPelayanan { id String @id @default(cuid()) PelayananAjuan PelayananAjuan @relation(fields: [idPengajuanLayanan], references: [id]) idPengajuanLayanan String CategoryPelayanan CategoryPelayanan @relation(fields: [idCategory], references: [id]) idCategory String jenis String value String isActive Boolean @default(true) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model SuratPelayanan { id String @id @default(cuid()) PelayananAjuan PelayananAjuan @relation(fields: [idPengajuanLayanan], references: [id]) idPengajuanLayanan String CategoryPelayanan CategoryPelayanan @relation(fields: [idCategory], references: [id]) idCategory String Warga Warga @relation(fields: [idWarga], references: [id]) idWarga String noSurat String file String? dateExpired DateTime? @db.Date status Int @default(0) isActive Boolean @default(true) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model Configuration { id String @id @default(cuid()) name String value String createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } enum StatusPengaduan { diterima antrian dikerjakan ditolak selesai }