From e889a97e2ab43284619f0ca60685758158fb6d4d Mon Sep 17 00:00:00 2001 From: amal Date: Mon, 6 Apr 2026 17:24:28 +0800 Subject: [PATCH] upd: database --- .../migration.sql | 82 +++++++++++++++++ prisma/schema.prisma | 90 +++++++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 prisma/migrations/20260406032748_tambah_tb_bug/migration.sql diff --git a/prisma/migrations/20260406032748_tambah_tb_bug/migration.sql b/prisma/migrations/20260406032748_tambah_tb_bug/migration.sql new file mode 100644 index 0000000..7a8143d --- /dev/null +++ b/prisma/migrations/20260406032748_tambah_tb_bug/migration.sql @@ -0,0 +1,82 @@ +-- CreateEnum +CREATE TYPE "App" AS ENUM ('desa_plus', 'hipmi'); + +-- CreateEnum +CREATE TYPE "BugSource" AS ENUM ('QC', 'SYSTEM', 'USER'); + +-- CreateEnum +CREATE TYPE "BugStatus" AS ENUM ('OPEN', 'ON_HOLD', 'IN_PROGRESS', 'RESOLVED', 'RELEASED', 'CLOSED'); + +-- AlterEnum +ALTER TYPE "Role" ADD VALUE 'DEVELOPER'; + +-- AlterTable +ALTER TABLE "user" ADD COLUMN "active" BOOLEAN NOT NULL DEFAULT true; + +-- CreateTable +CREATE TABLE "log" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "type" TEXT NOT NULL, + "message" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "log_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "bug" ( + "id" TEXT NOT NULL, + "userId" TEXT, + "app" "App" NOT NULL, + "affectedVersion" TEXT NOT NULL, + "device" TEXT NOT NULL, + "os" TEXT NOT NULL, + "status" "BugStatus" NOT NULL, + "source" "BugSource" NOT NULL, + "description" TEXT NOT NULL, + "stackTrace" TEXT, + "fixedVersion" TEXT, + "feedBack" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "bug_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "bug_image" ( + "id" TEXT NOT NULL, + "bugId" TEXT NOT NULL, + "imageUrl" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "bug_image_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "bug_log" ( + "id" TEXT NOT NULL, + "bugId" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "status" "BugStatus" NOT NULL, + "description" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "bug_log_pkey" PRIMARY KEY ("id") +); + +-- AddForeignKey +ALTER TABLE "log" ADD CONSTRAINT "log_userId_fkey" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "bug" ADD CONSTRAINT "bug_userId_fkey" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "bug_image" ADD CONSTRAINT "bug_image_bugId_fkey" FOREIGN KEY ("bugId") REFERENCES "bug"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "bug_log" ADD CONSTRAINT "bug_log_bugId_fkey" FOREIGN KEY ("bugId") REFERENCES "bug"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "bug_log" ADD CONSTRAINT "bug_log_userId_fkey" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index e67948b..baa9904 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -12,6 +12,27 @@ enum Role { USER ADMIN SUPER_ADMIN + DEVELOPER +} + +enum App{ + desa_plus + hipmi +} + +enum BugSource{ + QC + SYSTEM + USER +} + +enum BugStatus{ + OPEN + ON_HOLD + IN_PROGRESS + RESOLVED + RELEASED + CLOSED } model User { @@ -20,10 +41,14 @@ model User { email String @unique password String role Role @default(USER) + active Boolean @default(true) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt sessions Session[] + logs Log[] + bugs Bug[] + bugLogs BugLog[] @@map("user") } @@ -40,3 +65,68 @@ model Session { @@index([token]) @@map("session") } + +model Log { + id String @id @default(uuid()) + userId String + type String + message String + createdAt DateTime @default(now()) + + user User @relation(fields: [userId], references: [id]) + + @@map("log") +} + +model Bug { + id String @id @default(uuid()) + userId String? + app App + affectedVersion String + device String + os String + status BugStatus + source BugSource + description String + stackTrace String? + fixedVersion String? + feedBack String? + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + user User? @relation(fields: [userId], references: [id]) + + images BugImage[] + logs BugLog[] + + @@map("bug") +} + +model BugImage { + id String @id @default(uuid()) + bugId String + imageUrl String + createdAt DateTime @default(now()) + + bug Bug @relation(fields: [bugId], references: [id], onDelete: Cascade) + + @@map("bug_image") +} + +model BugLog { + id String @id @default(uuid()) + bugId String + userId String + status BugStatus + description String + createdAt DateTime @default(now()) + + bug Bug @relation(fields: [bugId], references: [id], onDelete: Cascade) + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@map("bug_log") +} + + + +