// This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema // Looking for ways to speed up your queries, or scale easily with your serverless or edge functions? // Try Prisma Accelerate: https://pris.ly/cli/accelerate-init generator client { provider = "prisma-client-js" output = "../src/generated/prisma" } datasource db { provider = "mysql" url = env("DATABASE_URL") } model Admin { id Int @id @default(autoincrement()) nama_depan String @db.VarChar(255) nama_belakang String @db.VarChar(255) role Role @default(admin) email String @unique @db.VarChar(255) password String @db.Text signature String? @db.Text // singature untuk identifikasi auth jwt (best practice) @@map("admin") } model HasilResearch { id Int @id @default(autoincrement()) image_path String @db.Text nama_project String @db.VarChar(255) deskripsi String @db.VarChar(255) link_project String @db.Text created_at DateTime @default(now()) @@map("hasil_research") } model LamaranMagang { id Int @id @default(autoincrement()) id_mahasiswa Int id_lowongan_magang String @db.VarChar(255) status StatusLamaran batch Int? created_at DateTime @default(now()) update_at DateTime batch_data Batch? @relation(fields: [batch], references: [id], map: "lamaran_magang_batch_foreign") mahasiswa Mahasiswa @relation(fields: [id_mahasiswa], references: [id], map: "lamaran_magang_id_mahasiswa_foreign") lowongan_magang LowonganMagang @relation(fields: [id_lowongan_magang], references: [id], map: "lamaran_magang_id_lowongan_magang_foreign") @@index([id_mahasiswa], map: "lamaran_magang_id_mahasiswa_foreign") @@index([id_lowongan_magang], map: "lamaran_magang_id_lowongan_magang_foreign") @@index([batch]) @@map("lamaran_magang") } model LowonganMagang { id String @id @db.VarChar(255) posisi String @db.VarChar(255) kelompok_peminatan String @db.VarChar(255) image_path String @db.Text jobdesk String @db.Text lokasi String @db.VarChar(255) kualifikasi String @db.Text benefit String @db.Text durasi_awal DateTime @db.Date durasi_akhir DateTime @db.Date id_batch Int batch Batch @relation(fields: [id_batch], references: [id], map: "lowongan_magang_id_batch_foreign") status_lowongan StatusLowongan paid PaidStatus created_at DateTime @default(now()) lamaran_magang LamaranMagang[] @@index([id_batch], map: "lowongan_magang_id_batch_foreign") @@map("lowongan_magang") } model Mahasiswa { id Int @id @default(autoincrement()) nama_depan String @db.VarChar(255) nama_belakang String? @db.VarChar(255) email String @unique @db.VarChar(255) kontak String @db.VarChar(255) jurusan String @db.VarChar(255) universitas String @db.VarChar(255) negara String @db.VarChar(255) role StudentRole @default(student) cv_path String @db.Text portofolio_path String @db.Text motivasi String @db.Text relevant_skills String @db.VarChar(255) lamaran_magang LamaranMagang[] @@map("mahasiswa") } model Partnership { id Int @id @default(autoincrement()) nama_partner String @db.VarChar(255) image_path String @db.Text created_at DateTime @default(now()) @@map("partnership") } model Faq { id Int @id @default(autoincrement()) pertanyaan String @db.Text jawaban String @db.Text created_at DateTime @default(now()) @@map("faq") } model RiwayatPelamar { id Int @id @default(autoincrement()) batch Int negara String? @db.VarChar(255) posisi String? @db.VarChar(255) tahun Int jumlah Int pelamar_diterima Int pelamar_ditolak Int pelamar_diproses Int presentase_diterima Float presentase_ditolak Float presentase_diproses Float created_at DateTime @default(now()) @@unique([batch, negara, posisi]) @@index([batch]) @@index([negara]) @@index([posisi]) @@map("riwayat_pelamar") } model Feedback { id Int @id @default(autoincrement()) nama String @db.VarChar(255) universitas String @db.VarChar(255) pesan String @db.Text batch Int posisi String @db.VarChar(255) tahun Int image_path String @db.Text created_at DateTime @default(now()) @@map("feedback") } model Batch { id Int @id @default(autoincrement()) batch_number Int @unique is_active Boolean @default(false) created_at DateTime @default(now()) updated_at DateTime @updatedAt lowongan_magang LowonganMagang[] lamaranMagangs LamaranMagang[] @@index([is_active]) @@index([batch_number]) @@map("batch") } enum Role { admin } enum StudentRole { student } enum StatusLamaran { diterima diproses ditolak } enum StatusLowongan { dibuka ditutup } enum PaidStatus { paid unpaid }