203 lines
6.4 KiB
Plaintext
203 lines
6.4 KiB
Plaintext
//docs: https://www.prisma.io/docs/orm/v6/prisma-schema/overview
|
|
generator client {
|
|
provider = "prisma-client"
|
|
output = "../src/generated/prisma"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "mysql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
enum Role {
|
|
ADMIN
|
|
STUDENT
|
|
}
|
|
|
|
enum StatusLamaran {
|
|
DITERIMA
|
|
DIPROSES
|
|
DITOLAK
|
|
}
|
|
|
|
enum PaidStatus {
|
|
PAID
|
|
UNPAID
|
|
}
|
|
|
|
enum StatusLowongan {
|
|
DIBUKA
|
|
DITUTUP
|
|
}
|
|
|
|
model User {
|
|
id String @id @default(cuid())
|
|
email String @unique @db.VarChar(255)
|
|
passwordHash String @map("password_hash") @db.Text
|
|
role Role
|
|
// ...
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
updatedAt DateTime @updatedAt @map("updated_at")
|
|
|
|
admin Admin?
|
|
mahasiswa Mahasiswa?
|
|
|
|
@@map("user")
|
|
}
|
|
|
|
model Admin {
|
|
id Int @id @default(autoincrement())
|
|
idUser String @unique @map("id_user")
|
|
namaDepan String @map("nama_depan") @db.VarChar(255)
|
|
namaBelakang String? @map("nama_belakang") @db.VarChar(255)
|
|
|
|
user User @relation(fields: [idUser], references: [id], map: "admin_id_user_foreign")
|
|
|
|
@@map("admin")
|
|
}
|
|
|
|
model Mahasiswa {
|
|
id Int @id @default(autoincrement())
|
|
idUser String @unique @map("id_user")
|
|
namaDepan String @map("nama_depan") @db.VarChar(255)
|
|
namaBelakang String? @map("nama_belakang") @db.VarChar(255)
|
|
kontak String @db.VarChar(255)
|
|
jurusan String @db.VarChar(255)
|
|
universitas String @db.VarChar(255)
|
|
negara String @db.VarChar(255)
|
|
cvPath String @map("cv_path") @db.Text
|
|
portofolioPath String @map("portofolio_path") @db.Text
|
|
motivasi String @db.Text
|
|
relevantSkills String @map("relevant_skills") @db.VarChar(255)
|
|
|
|
user User @relation(fields: [idUser], references: [id], map: "mahasiswa_id_user_foreign")
|
|
|
|
lamaranMagangs LamaranMagang[]
|
|
|
|
@@map("mahasiswa")
|
|
}
|
|
|
|
model Batch {
|
|
id Int @id @default(autoincrement())
|
|
batchNumber Int @unique @map("batch_number")
|
|
isActive Boolean @default(false) @map("is_active")
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
updatedAt DateTime @updatedAt @map("updated_at")
|
|
|
|
lowonganMagangs LowonganMagang[]
|
|
lamaranMagangs LamaranMagang[]
|
|
|
|
@@index([isActive])
|
|
@@index([batchNumber])
|
|
@@map("batch")
|
|
}
|
|
|
|
model LowonganMagang {
|
|
id String @id @db.VarChar(255)
|
|
idBatch Int @map("id_batch")
|
|
posisi String @db.VarChar(255)
|
|
kelompokPeminatan String @map("kelompok_peminatan") @db.VarChar(255)
|
|
imagePath String @map("image_path") @db.Text
|
|
jobdesk String @db.Text
|
|
lokasi String @db.VarChar(255)
|
|
kualifikasi String @db.Text
|
|
benefit String @db.Text
|
|
durasiAwal DateTime @map("durasi_awal") @db.Date
|
|
durasiAkhir DateTime @map("durasi_akhir") @db.Date
|
|
statusLowongan StatusLowongan @map("status_lowongan")
|
|
paid PaidStatus
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
|
|
batch Batch @relation(fields: [idBatch], references: [id], map: "lowongan_magang_id_batch_foreign")
|
|
|
|
lamaranMagangs LamaranMagang[]
|
|
|
|
@@index([idBatch], map: "lowongan_magang_id_batch_foreign")
|
|
@@map("lowongan_magang")
|
|
}
|
|
|
|
model LamaranMagang {
|
|
id Int @id @default(autoincrement())
|
|
idMahasiswa Int @map("id_mahasiswa")
|
|
idLowonganMagang String @map("id_lowongan_magang") @db.VarChar(255)
|
|
status StatusLamaran
|
|
batch Int?
|
|
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
updatedAt DateTime @updatedAt @map("updated_at")
|
|
|
|
batchData Batch? @relation(fields: [batch], references: [id], map: "lamaran_magang_batch_foreign")
|
|
mahasiswa Mahasiswa @relation(fields: [idMahasiswa], references: [id], map: "lamaran_magang_id_mahasiswa_foreign")
|
|
lowonganMagang LowonganMagang @relation(fields: [idLowonganMagang], references: [id], map: "lamaran_magang_id_lowongan_magang_foreign")
|
|
|
|
@@index([idMahasiswa], map: "lamaran_magang_id_mahasiswa_foreign")
|
|
@@index([idLowonganMagang], map: "lamaran_magang_id_lowongan_magang_foreign")
|
|
@@index([batch])
|
|
@@map("lamaran_magang")
|
|
}
|
|
|
|
model RiwayatPelamar {
|
|
id Int @id @default(autoincrement())
|
|
batch Int
|
|
negara String? @db.VarChar(255)
|
|
posisi String? @db.VarChar(255)
|
|
tahun Int
|
|
jumlah Int
|
|
pelamarDiterima Int @map("pelamar_diterima")
|
|
pelamarDitolak Int @map("pelamar_ditolak")
|
|
pelamarDiproses Int @map("pelamar_diproses")
|
|
presentaseDiterima Float @map("presentase_diterima")
|
|
presentaseDitolak Float @map("presentase_ditolak")
|
|
presentaseDiproses Float @map("presentase_diproses")
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
|
|
@@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
|
|
imagePath String @map("image_path") @db.Text
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
|
|
@@map("feedback")
|
|
}
|
|
|
|
model HasilResearch {
|
|
id Int @id @default(autoincrement())
|
|
imagePath String @map("image_path") @db.Text
|
|
namaProject String @map("nama_project") @db.VarChar(255)
|
|
deskripsi String @db.VarChar(255)
|
|
linkProject String @map("link_project") @db.Text
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
|
|
@@map("hasil_research")
|
|
}
|
|
|
|
model Partnership {
|
|
id Int @id @default(autoincrement())
|
|
namaPartner String @map("nama_partner") @db.VarChar(255)
|
|
imagePath String @map("image_path") @db.Text
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
|
|
@@map("partnership")
|
|
}
|
|
|
|
model Faq {
|
|
id Int @id @default(autoincrement())
|
|
pertanyaan String @db.Text
|
|
jawaban String @db.Text
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
|
|
@@map("faq")
|
|
}
|