feat: nambahin certificate system

This commit is contained in:
Rafi Athallah
2026-06-09 22:14:27 +07:00
parent edc287968d
commit 7e6b56fbe0
10 changed files with 951 additions and 8 deletions
@@ -0,0 +1,20 @@
-- CreateTable
CREATE TABLE `certificate` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`id_project` INTEGER NOT NULL,
`id_user` INTEGER NOT NULL,
`certificate_no` VARCHAR(255) NOT NULL,
`issued_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
UNIQUE INDEX `certificate_certificate_no_key`(`certificate_no`),
INDEX `certificate_id_project_foreign`(`id_project`),
INDEX `certificate_id_user_foreign`(`id_user`),
UNIQUE INDEX `certificate_id_project_id_user_key`(`id_project`, `id_user`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- AddForeignKey
ALTER TABLE `certificate` ADD CONSTRAINT `certificate_id_project_foreign` FOREIGN KEY (`id_project`) REFERENCES `project`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `certificate` ADD CONSTRAINT `certificate_id_user_foreign` FOREIGN KEY (`id_user`) REFERENCES `user`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
+22 -3
View File
@@ -194,6 +194,7 @@ model User {
lamaran_magang LamaranMagang @relation(fields: [id_lamaran_magang], references: [id], map: "user_id_lamaran_magang_foreign")
project_members ProjectMember[]
task_submissions TaskSubmission[]
certificates Certificate[]
@@index([email])
@@map("user")
@@ -212,9 +213,10 @@ model Project {
created_at DateTime @default(now())
updated_at DateTime @updatedAt
admin Admin @relation(fields: [id_admin], references: [id], map: "project_id_admin_foreign")
members ProjectMember[]
tasks Task[]
admin Admin @relation(fields: [id_admin], references: [id], map: "project_id_admin_foreign")
members ProjectMember[]
tasks Task[]
certificates Certificate[]
@@index([id_admin], map: "project_id_admin_foreign")
@@index([status])
@@ -328,3 +330,20 @@ enum SubmissionType {
file_upload
url_link
}
model Certificate {
id Int @id @default(autoincrement())
uuid String @unique @default(uuid()) @db.VarChar(36)
id_project Int
id_user Int
certificate_no String @unique @db.VarChar(255)
issued_at DateTime @default(now())
project Project @relation(fields: [id_project], references: [id], map: "certificate_id_project_foreign")
user User @relation(fields: [id_user], references: [id], map: "certificate_id_user_foreign")
@@unique([id_project, id_user])
@@index([id_project], map: "certificate_id_project_foreign")
@@index([id_user], map: "certificate_id_user_foreign")
@@map("certificate")
}