feat: inisialisasi schema database

This commit is contained in:
Muhammad Zhafran Ilham
2026-05-24 04:48:29 +07:00
parent 15efd81134
commit 4c4e5c108b
9 changed files with 1248 additions and 30 deletions
@@ -0,0 +1,111 @@
-- CreateTable
CREATE TABLE `user` (
`id` VARCHAR(191) NOT NULL,
`email` VARCHAR(255) NOT NULL,
`password_hash` TEXT NOT NULL,
`role` ENUM('ADMIN', 'STUDENT') NOT NULL,
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updated_at` DATETIME(3) NOT NULL,
UNIQUE INDEX `user_email_key`(`email`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `admin` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`id_user` VARCHAR(191) NOT NULL,
`nama_depan` VARCHAR(255) NOT NULL,
`nama_belakang` VARCHAR(255) NULL,
UNIQUE INDEX `admin_id_user_key`(`id_user`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `mahasiswa` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`id_user` VARCHAR(191) NOT NULL,
`nama_depan` VARCHAR(255) NOT NULL,
`nama_belakang` VARCHAR(255) NULL,
`kontak` VARCHAR(255) NOT NULL,
`jurusan` VARCHAR(255) NOT NULL,
`universitas` VARCHAR(255) NOT NULL,
`negara` VARCHAR(255) NOT NULL,
`cv_path` TEXT NOT NULL,
`portofolio_path` TEXT NOT NULL,
`motivasi` TEXT NOT NULL,
`relevant_skills` VARCHAR(255) NOT NULL,
UNIQUE INDEX `mahasiswa_id_user_key`(`id_user`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `batch` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`batch_number` INTEGER NOT NULL,
`is_active` BOOLEAN NOT NULL DEFAULT false,
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updated_at` DATETIME(3) NOT NULL,
UNIQUE INDEX `batch_batch_number_key`(`batch_number`),
INDEX `batch_is_active_idx`(`is_active`),
INDEX `batch_batch_number_idx`(`batch_number`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `lowongan_magang` (
`id` VARCHAR(255) NOT NULL,
`id_batch` INTEGER NOT NULL,
`posisi` VARCHAR(255) NOT NULL,
`kelompok_peminatan` VARCHAR(255) NOT NULL,
`image_path` TEXT NOT NULL,
`jobdesk` TEXT NOT NULL,
`lokasi` VARCHAR(255) NOT NULL,
`kualifikasi` TEXT NOT NULL,
`benefit` TEXT NOT NULL,
`durasi_awal` DATE NOT NULL,
`durasi_akhir` DATE NOT NULL,
`status_lowongan` ENUM('DIBUKA', 'DITUTUP') NOT NULL,
`paid` ENUM('PAID', 'UNPAID') NOT NULL,
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
INDEX `lowongan_magang_id_batch_foreign`(`id_batch`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `lamaran_magang` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`id_mahasiswa` INTEGER NOT NULL,
`id_lowongan_magang` VARCHAR(255) NOT NULL,
`status` ENUM('DITERIMA', 'DIPROSES', 'DITOLAK') NOT NULL,
`batch` INTEGER NULL,
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updated_at` DATETIME(3) NOT NULL,
INDEX `lamaran_magang_id_mahasiswa_foreign`(`id_mahasiswa`),
INDEX `lamaran_magang_id_lowongan_magang_foreign`(`id_lowongan_magang`),
INDEX `lamaran_magang_batch_idx`(`batch`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- AddForeignKey
ALTER TABLE `admin` ADD CONSTRAINT `admin_id_user_foreign` FOREIGN KEY (`id_user`) REFERENCES `user`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `mahasiswa` ADD CONSTRAINT `mahasiswa_id_user_foreign` FOREIGN KEY (`id_user`) REFERENCES `user`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `lowongan_magang` ADD CONSTRAINT `lowongan_magang_id_batch_foreign` FOREIGN KEY (`id_batch`) REFERENCES `batch`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `lamaran_magang` ADD CONSTRAINT `lamaran_magang_batch_foreign` FOREIGN KEY (`batch`) REFERENCES `batch`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `lamaran_magang` ADD CONSTRAINT `lamaran_magang_id_mahasiswa_foreign` FOREIGN KEY (`id_mahasiswa`) REFERENCES `mahasiswa`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `lamaran_magang` ADD CONSTRAINT `lamaran_magang_id_lowongan_magang_foreign` FOREIGN KEY (`id_lowongan_magang`) REFERENCES `lowongan_magang`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;