Merge pull request 'upd: database' (#4) from amalia/06-apr-26 into main

Reviewed-on: #4
This commit is contained in:
2026-04-06 17:25:21 +08:00
2 changed files with 172 additions and 0 deletions

View File

@@ -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;

View File

@@ -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")
}