database awal

Deskripsi:
- pembuatan struktur database awal
- nambah folder village
- ganti nama folder discuss menjadi discussion

No Issues
This commit is contained in:
amel
2024-07-03 14:14:27 +08:00
parent e26d6b29b7
commit 8b0c00940d
5 changed files with 357 additions and 0 deletions

View File

@@ -22,6 +22,7 @@
"@mantine/nprogress": "^7.11.0",
"@mantine/spotlight": "^7.11.0",
"@mantine/tiptap": "^7.11.0",
"@prisma/client": "5.16.1",
"@tabler/icons-react": "^3.7.0",
"@tiptap/extension-link": "^2.4.0",
"@tiptap/react": "^2.4.0",

View File

@@ -12,3 +12,353 @@ datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model UserRole {
id String @id @default(cuid())
name String
desc String @db.Text
isActive Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
User User[]
}
model Village {
id String @id @default(cuid())
name String
desc String @db.Text
isActive Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
Group Group[]
User User[]
Annoucement Annoucement[]
Project Project[]
Division Division[]
}
model Group {
id String @id @default(cuid())
Village Village @relation(fields: [idVillage], references: [id])
idVillage String
name String
isActive Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
Position Position[]
User User[]
Project Project[]
Division Division[]
AnnoucementMember AnnoucementMember[]
}
model Position {
id String @id @default(cuid())
Group Group @relation(fields: [idGroup], references: [id])
idGroup String
name String
isActive Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
User User[]
}
model User {
id String @id @default(cuid())
UserRole UserRole @relation(fields: [idUserRole], references: [id])
idUserRole String
Village Village? @relation(fields: [idVillage], references: [id])
idVillage String?
Group Group? @relation(fields: [idGroup], references: [id])
idGroup String?
Position Position? @relation(fields: [idPosition], references: [id])
idPosition String?
nik String @unique
name String
phone String @unique
email String @unique
gender String @default("M") //M= Male, F= Female
isActive Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
Annoucement Annoucement[]
Project Project[]
ProjectMember ProjectMember[]
ProjectComment ProjectComment[]
UserLog UserLog[]
Division Division[]
DivisionMember DivisionMember[]
DivisionProjectMember DivisionProjectMember[]
DivisionProjectFile DivisionProjectFile[]
DivisionDisscussion DivisionDisscussion[]
DivisionDisscussionComment DivisionDisscussionComment[]
DivisionDocumentFolderFile DivisionDocumentFolderFile[]
DivisionCalendar DivisionCalendar[]
}
model UserLog {
id String @id @default(cuid())
User User @relation(fields: [idUser], references: [id])
idUser String
action String
desc String @db.Text
idContent String
tbContent String
isActive Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Annoucement {
id String @id @default(cuid())
Village Village @relation(fields: [idVillage], references: [id])
idVillage String
title String
desc String @db.Text
isActive Boolean @default(true)
User User @relation(fields: [createdBy], references: [id])
createdBy String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
AnnoucementMember AnnoucementMember[]
}
model AnnoucementMember {
id String @id @default(cuid())
Annoucement Annoucement @relation(fields: [idAnnoucement], references: [id])
idAnnoucement String
Group Group @relation(fields: [idGroup], references: [id])
idGroup String
Division Division @relation(fields: [idDivision], references: [id])
idDivision String
isActive Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Project {
id String @id @default(cuid())
Village Village @relation(fields: [idVillage], references: [id])
idVillage String
Group Group @relation(fields: [idGroup], references: [id])
idGroup String
name String
desc String @db.Text
isActive Boolean @default(true)
User User @relation(fields: [createdBy], references: [id])
createdBy String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
ProjectMember ProjectMember[]
ProjectFile ProjectFile[]
ProjectComment ProjectComment[]
}
model ProjectMember {
id String @id @default(cuid())
Project Project @relation(fields: [idProject], references: [id])
idProject String
User User @relation(fields: [idUser], references: [id])
idUser String
isLeader Boolean @default(false)
isActive Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model ProjectFile {
id String @id @default(cuid())
Project Project @relation(fields: [idProject], references: [id])
idProject String
name String
extension String
isActive Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model ProjectComment {
id String @id @default(cuid())
Project Project @relation(fields: [idProject], references: [id])
idProject String
User User @relation(fields: [createdBy], references: [id])
createdBy String
comment String @db.Text
isActive Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Division {
id String @id @default(cuid())
Village Village @relation(fields: [idVillage], references: [id])
idVillage String
Group Group @relation(fields: [idGroup], references: [id])
idGroup String
name String
desc String @db.Text
isActive Boolean @default(true)
User User @relation(fields: [createdBy], references: [id])
createdBy String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
DivisionMember DivisionMember[]
AnnoucementMember AnnoucementMember[]
DivisionProject DivisionProject[]
DivisionProjectTask DivisionProjectTask[]
DivisionProjectMember DivisionProjectMember[]
DivisionProjectFile DivisionProjectFile[]
DivisionDisscussion DivisionDisscussion[]
DivisionDocumentFolderFile DivisionDocumentFolderFile[]
DivisionDocumentShare DivisionDocumentShare[]
DivisionCalendar DivisionCalendar[]
DivisionCalendarReminder DivisionCalendarReminder[]
}
model DivisionMember {
id String @id @default(cuid())
Division Division @relation(fields: [idDivision], references: [id])
idDivision String
User User @relation(fields: [idUser], references: [id])
idUser String
isAdmin Boolean @default(false)
isLeader Boolean @default(false)
isActive Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model DivisionProject {
id String @id @default(cuid())
Division Division @relation(fields: [idDivision], references: [id])
idDivision String
title String
desc String @db.Text
status Int @default(0)
isActive Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model DivisionProjectTask {
id String @id @default(cuid())
Division Division @relation(fields: [idDivision], references: [id])
idDivision String
title String
desc String @db.Text
status Int @default(0)
dateStart DateTime @db.Date
dateEnd DateTime @db.Date
isActive Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model DivisionProjectMember {
id String @id @default(cuid())
Division Division @relation(fields: [idDivision], references: [id])
idDivision String
User User @relation(fields: [idUser], references: [id])
idUser String
isLeader Boolean @default(false)
isActive Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model DivisionProjectFile {
id String @id @default(cuid())
Division Division @relation(fields: [idDivision], references: [id])
idDivision String
name String
extension String
isActive Boolean @default(true)
User User @relation(fields: [createdBy], references: [id])
createdBy String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model DivisionDisscussion {
id String @id @default(cuid())
Division Division @relation(fields: [idDivision], references: [id])
idDivision String
title String
desc String @db.Text
status Int @default(1) // 1 = open, 2 = close
isActive Boolean @default(true)
User User @relation(fields: [createdBy], references: [id])
createdBy String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model DivisionDisscussionComment {
id String @id @default(cuid())
idDisscussion String
comment String @db.Text
isActive Boolean @default(true)
User User @relation(fields: [createdBy], references: [id])
createdBy String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model DivisionDocumentFolderFile {
id String @id @default(cuid())
Division Division @relation(fields: [idDivision], references: [id])
idDivision String
category String @default("FOLDER") // FOLDER OR FILE
name String
extension String
path String
isActive Boolean @default(true)
User User @relation(fields: [createdBy], references: [id])
createdBy String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
DivisionDocumentShare DivisionDocumentShare[]
}
model DivisionDocumentShare {
id String @id @default(cuid())
DivisionDocumentFolderFile DivisionDocumentFolderFile @relation(fields: [idDocument], references: [id])
idDocument String
Division Division @relation(fields: [idDivision], references: [id])
idDivision String
isActive Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model DivisionCalendar {
id String @id @default(cuid())
Division Division @relation(fields: [idDivision], references: [id])
idDivision String
title String
desc String @db.Text
dateStart DateTime @db.Date
dateEnd DateTime @db.Date
repeatEventTyper String
reminderInterval String
status Int @default(0)
isActive Boolean @default(true)
User User @relation(fields: [createdBy], references: [id])
createdBy String
createdAt DateTime @default(now())
DivisionCalendarReminder DivisionCalendarReminder[]
}
model DivisionCalendarReminder {
id String @id @default(cuid())
Division Division @relation(fields: [idDivision], references: [id])
idDivision String
DivisionCalendar DivisionCalendar @relation(fields: [idCalendar], references: [id])
idCalendar String
dateStart DateTime @db.Date
dateEnd DateTime @db.Date
status Int @default(0)
isActive Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}

View File

View File

@@ -342,6 +342,11 @@
resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz"
integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
"@prisma/client@5.16.1":
version "5.16.1"
resolved "https://registry.yarnpkg.com/@prisma/client/-/client-5.16.1.tgz#65c5649b4701c097e7fa943c91a3140ce8bf053d"
integrity sha512-wM9SKQjF0qLxdnOZIVAIMKiz6Hu7vDt4FFAih85K1dk/Rr2mdahy6d3QP41K62N9O0DJJA//gUDA3Mp49xsKIg==
"@prisma/debug@5.16.1":
version "5.16.1"
resolved "https://registry.npmjs.org/@prisma/debug/-/debug-5.16.1.tgz"
@@ -3098,6 +3103,7 @@ streamsearch@^1.1.0:
integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==
"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0:
name string-width-cjs
version "4.2.3"
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==