11generator client {
2- provider = " prisma-client-js "
2+ provider = " prisma-client-js "
33}
44
55datasource db {
@@ -11,16 +11,30 @@ model User {
1111 id String @id @default (cuid () )
1212 name String
1313 email String @unique
14- projectRoles ProjectRole [] // Roles of users in various projects
15- assignedTasks TaskAssignment [] // Tasks assigned to the user
14+ projectRoles ProjectRole []
15+ assignedTasks TaskAssignment []
1616 createdTasks Task [] @relation (" CreatedTasks " )
17- uploadedFiles File [] @relation (" UploadedFiles " ) // Files uploaded by the user
17+ uploadedFiles File [] @relation (" UploadedFiles " )
1818 comments Comment []
19- activities Activity []
19+ activities Activity []
20+ emojiTaskUsers EmojiTaskUser [] // Added relation field for EmojiTaskUser
21+
2022
2123 @@map (" users " )
2224}
2325
26+ model EmojiTaskUser {
27+ id String @id @default (cuid () )
28+ emoji String
29+ userId String
30+ taskId String
31+
32+ user User @relation (fields : [userId ] , references : [id ] )
33+ task Task @relation (fields : [taskId ] , references : [id ] )
34+
35+ @@map (" emoji_task_users " )
36+ }
37+
2438model Project {
2539 id String @id @default (cuid () )
2640 title String
@@ -30,9 +44,9 @@ model Project {
3044 usedBudget Float
3145 startDate DateTime
3246 endDate DateTime
33- projectRoles ProjectRole [] // Roles of users in the project
34- tasks Task [] @relation (" ProjectTasks " ) // Tasks in the project
35- files File [] @relation (" ProjectFiles " ) // Files associated with the project
47+ projectRoles ProjectRole []
48+ tasks Task [] @relation (" ProjectTasks " )
49+ files File [] @relation (" ProjectFiles " )
3650
3751 @@map (" projects " )
3852}
@@ -51,27 +65,29 @@ model ProjectRole {
5165}
5266
5367model Task {
54- id String @id @default (cuid () )
68+ id String @id @default (cuid () )
5569 title String
5670 description String
5771 status TaskStatus
58- projectId String // Link to the Project
59- project Project @relation (" ProjectTasks " , fields : [projectId ] , references : [id ] ) // Relation to the Project model
60- tags Tag [] @relation (" TaskTags " ) // Many-to-many relation with Tag
72+ projectId String
73+ project Project @relation (" ProjectTasks " , fields : [projectId ] , references : [id ] )
6174 subTasks Task [] @relation (" SubTasks " )
6275 parentTask Task ? @relation (" SubTasks " , fields : [parentTaskId ] , references : [id ] )
63- parentTaskId String ?
64- expectedBudget Float
65- realBudget Float
66- usedBudget Float
76+ parentTaskId String ?
77+ statusBudgets BudgetStatus
78+ budget Float
79+ advance Float
80+ expense Float
6781 startDate DateTime ?
6882 endDate DateTime ?
69- assignedUsers TaskAssignment [] // Many-to-many relation with users
83+ assignedUsers TaskAssignment []
7084 createdById String ?
71- createdBy User ? @relation (" CreatedTasks " , fields : [createdById ] , references : [id ] )
85+ createdBy User ? @relation (" CreatedTasks " , fields : [createdById ] , references : [id ] )
7286 comments Comment []
7387 activities Activity []
74- files File [] @relation (" TaskFiles " ) // Files associated with the task
88+ files File [] @relation (" TaskFiles " )
89+ tags TaskTag []
90+ emojiTaskUsers EmojiTaskUser [] // Added relation field for EmojiTaskUser
7591
7692 @@map (" tasks " )
7793}
@@ -91,7 +107,7 @@ model TaskAssignment {
91107model Tag {
92108 id String @id @default (cuid () )
93109 name String @unique
94- tasks Task [] @relation ( " TaskTags " ) // Many-to-many relation with Task
110+ tasks TaskTag []
95111
96112 @@map (" tags " )
97113}
@@ -101,7 +117,9 @@ model Comment {
101117 content String
102118 taskId String
103119 authorId String
104- createdAt DateTime @default (now () ) // Automatically set timestamp when comment is created
120+ createdAt DateTime @default (now () )
121+ isDelete Boolean @default (false )
122+ editTime DateTime ?
105123
106124 task Task @relation (fields : [taskId ] , references : [id ] )
107125 author User @relation (fields : [authorId ] , references : [id ] )
@@ -115,7 +133,7 @@ model Activity {
115133 detail String ?
116134 taskId String ?
117135 userId String
118- createdAt DateTime @default (now () ) // Automatically set timestamp when activity is logged
136+ createdAt DateTime @default (now () )
119137
120138 task Task ? @relation (fields : [taskId ] , references : [id ] )
121139 user User @relation (fields : [userId ] , references : [id ] )
@@ -126,12 +144,12 @@ model Activity {
126144model File {
127145 id String @id @default (cuid () )
128146 filePath String
129- fileSize Float // File size in bytes
147+ fileSize Float
130148 taskId String ?
149+ fileName String
131150 projectId String ?
132151 uploadedBy String
133- uploadedAt DateTime @default (now () ) // Automatically set timestamp when file is uploaded
134- createdAt DateTime @default (now () ) // Automatically set timestamp when file is created
152+ createdAt DateTime @default (now () )
135153
136154 task Task ? @relation (" TaskFiles " , fields : [taskId ] , references : [id ] )
137155 project Project ? @relation (" ProjectFiles " , fields : [projectId ] , references : [id ] )
@@ -140,24 +158,46 @@ model File {
140158 @@map (" files " )
141159}
142160
161+ // Join table for many-to-many relationship between Task and Tag
162+ model TaskTag {
163+ id String @id @default (cuid () )
164+ taskId String
165+ tagId String
166+
167+ task Task @relation (fields : [taskId ] , references : [id ] )
168+ tag Tag @relation (fields : [tagId ] , references : [id ] )
169+
170+ @@map (" task_tags " )
171+ }
172+
143173enum Role {
144174 Admin
145175 Director
146176 ProjectOwner
147177 Member
148178}
149179
150- enum TaskStatus {
180+ enum TaskStatus {
151181 Unassigned
152182 Assigned
153183 UnderReview
154184 InRecheck
155185 Done
156186}
157187
188+ enum BudgetStatus {
189+ Initial
190+ Added
191+ SubTasksAdded
192+ ParentTaskAdded
193+ }
194+
158195enum ActivityAction {
159- CREATE
196+ CREATED
160197 ASSIGNED
161- DELETE
162- UPLOAD
198+ DELETED
199+ UPLOADED
200+ UNASSIGNED
201+ ADDED
202+ REMOVED
163203}
0 commit comments