Files

117 lines
5.0 KiB
SQL

-- AlterTable
ALTER TABLE `admin` ADD COLUMN `professional_bio` TEXT NULL,
ADD COLUMN `profile_picture` TEXT NULL,
MODIFY `role` ENUM('admin', 'intern') NOT NULL DEFAULT 'admin';
-- CreateTable
CREATE TABLE `user` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`id_mahasiswa` INTEGER NOT NULL,
`id_lamaran_magang` INTEGER NOT NULL,
`full_name` VARCHAR(255) NOT NULL,
`email` VARCHAR(255) NOT NULL,
`password` TEXT NOT NULL,
`role` ENUM('admin', 'intern') NOT NULL DEFAULT 'intern',
`professional_bio` TEXT NULL,
`is_active` BOOLEAN NOT NULL DEFAULT true,
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updated_at` DATETIME(3) NOT NULL,
UNIQUE INDEX `user_id_mahasiswa_key`(`id_mahasiswa`),
UNIQUE INDEX `user_id_lamaran_magang_key`(`id_lamaran_magang`),
UNIQUE INDEX `user_email_key`(`email`),
INDEX `user_email_idx`(`email`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `project` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`id_admin` INTEGER NOT NULL,
`project_icon` ENUM('code', 'chart', 'cloud', 'mobile', 'gear', 'users', 'clipboard', 'speedometer', 'lightbulb', 'shield') NOT NULL DEFAULT 'code',
`project_name` VARCHAR(255) NOT NULL,
`description` TEXT NOT NULL,
`start_date` DATE NOT NULL,
`end_date` DATE NOT NULL,
`max_members` INTEGER NOT NULL DEFAULT 8,
`status` ENUM('active', 'completed', 'archived') NOT NULL DEFAULT 'active',
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updated_at` DATETIME(3) NOT NULL,
INDEX `project_id_admin_foreign`(`id_admin`),
INDEX `project_status_idx`(`status`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `project_member` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`id_project` INTEGER NOT NULL,
`id_user` INTEGER NOT NULL,
`status` ENUM('active', 'removed') NOT NULL DEFAULT 'active',
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updated_at` DATETIME(3) NOT NULL,
INDEX `project_member_id_project_foreign`(`id_project`),
INDEX `project_member_id_user_foreign`(`id_user`),
INDEX `project_member_status_idx`(`status`),
UNIQUE INDEX `project_member_id_project_id_user_key`(`id_project`, `id_user`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `task` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`id_project` INTEGER NOT NULL,
`title` VARCHAR(255) NOT NULL,
`description` TEXT NOT NULL,
`deadline_at` DATETIME(3) NOT NULL,
`submission_type` ENUM('file_upload', 'url_link') NOT NULL,
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updated_at` DATETIME(3) NOT NULL,
INDEX `task_id_project_foreign`(`id_project`),
INDEX `task_deadline_at_idx`(`deadline_at`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `task_submission` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`id_task` INTEGER NOT NULL,
`id_user` INTEGER NOT NULL,
`file_path` TEXT NULL,
`url_link` TEXT NULL,
`submitted_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updated_at` DATETIME(3) NOT NULL,
INDEX `task_submission_id_task_foreign`(`id_task`),
INDEX `task_submission_id_user_foreign`(`id_user`),
UNIQUE INDEX `task_submission_id_task_id_user_key`(`id_task`, `id_user`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- AddForeignKey
ALTER TABLE `user` ADD CONSTRAINT `user_id_mahasiswa_foreign` FOREIGN KEY (`id_mahasiswa`) REFERENCES `mahasiswa`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `user` ADD CONSTRAINT `user_id_lamaran_magang_foreign` FOREIGN KEY (`id_lamaran_magang`) REFERENCES `lamaran_magang`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `project` ADD CONSTRAINT `project_id_admin_foreign` FOREIGN KEY (`id_admin`) REFERENCES `admin`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `project_member` ADD CONSTRAINT `project_member_id_project_foreign` FOREIGN KEY (`id_project`) REFERENCES `project`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `project_member` ADD CONSTRAINT `project_member_id_user_foreign` FOREIGN KEY (`id_user`) REFERENCES `user`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `task` ADD CONSTRAINT `task_id_project_foreign` FOREIGN KEY (`id_project`) REFERENCES `project`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `task_submission` ADD CONSTRAINT `task_submission_id_task_foreign` FOREIGN KEY (`id_task`) REFERENCES `task`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `task_submission` ADD CONSTRAINT `task_submission_id_user_foreign` FOREIGN KEY (`id_user`) REFERENCES `user`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;