@@ -48,88 +48,103 @@ model chatMessage {
4848}
4949
5050model User {
51- id String @id @default (cuid () )
52- email String ? @unique
51+ id String @id @default (cuid () )
52+ email String ? @unique
5353 phone String ?
5454 name String ?
5555 photo String ?
56- role Role ? @default (USER )
57- password String ? // kalau pake password
58- session_token String ? @unique
59- refreshTokenHash String ? // simpan hash dari refresh token
60- refreshTokenExpiresAt DateTime ?
61- createdAt DateTime @default (now () )
62- updatedAt DateTime @updatedAt
63- members TeamMember [] @relation (" UserMembers " )
64-
56+ role Role ? @default (USER )
57+ password String ? // kalau pake password
58+ session_token String ? @unique
59+ refreshTokenHash String ? // simpan hash dari refresh token
60+ refreshTokenExpiresAt DateTime ?
61+ createdAt DateTime @default (now () )
62+ updatedAt DateTime @updatedAt
63+ members TeamMember [] @relation (" UserMembers " )
6564}
6665
6766model TeamMember {
68- id String @id @default (uuid () ) // pilih uuid supaya beda style dari user.id
69- clientId String ? @unique
70- userId String
71- workspaceId String
72- name String
73- role String ?
74- email String ?
75- photo String ?
76- phone String ?
77- isTrash Boolean @default (false )
78- isAdmin Boolean @default (false )
79- createdAt DateTime @default (now () )
80- updatedAt DateTime ?
81- Task Task [] @relation (" TaskMembers " )
82- TaskCreatedBy Task [] @relation (" TaskCreatedBy " )
67+ id String @id @default (uuid () ) // pilih uuid supaya beda style dari user.id
68+ clientId String ? @unique
69+ userId String
70+ workspaceId String
71+ name String
72+ role String ?
73+ email String ?
74+ photo String ?
75+ phone String ?
76+ isTrash Boolean @default (false )
77+ isAdmin Boolean @default (false )
78+ createdAt DateTime @default (now () )
79+ updatedAt DateTime ?
80+ Task Task [] @relation (" TaskMembers " )
81+ TaskCreatedBy Task [] @relation (" TaskCreatedBy " )
8382
8483 // FK ke Workspace
85- workspace Workspace ? @relation (" WorkspaceMembers " , fields : [workspaceId ] , references : [id ] )
86- user User ? @relation (" UserMembers " , fields : [userId ] , references : [id ] )
84+ workspace Workspace ? @relation (" WorkspaceMembers " , fields : [workspaceId ] , references : [id ] )
85+ user User ? @relation (" UserMembers " , fields : [userId ] , references : [id ] )
86+ taskAssignees TaskAssignee []
8787}
8888
8989model Workspace {
90- id String @id @default (uuid () )
91- clientId String ? @unique
90+ id String @id @default (uuid () )
91+ clientId String ? @unique
9292 name String
9393 description String ?
94- isTrash Boolean @default (false )
95- createdAt DateTime @default (now () )
94+ isTrash Boolean @default (false )
95+ createdAt DateTime @default (now () )
9696 updatedAt DateTime ?
97- projects Project [] @relation (" WorkspaceProjects " )
98- members TeamMember [] @relation (" WorkspaceMembers " )
97+ projects Project [] @relation (" WorkspaceProjects " )
98+ members TeamMember [] @relation (" WorkspaceMembers " )
9999}
100100
101101model Project {
102- id String @id @default (uuid () )
103- workspaceId String ?
104- clientId String ? @unique
105- name String
106- description String ?
107- isTrash Boolean @default (false )
108- createdAt DateTime @default (now () )
109- updatedAt DateTime ?
110- workspace Workspace ? @relation (" WorkspaceProjects " , fields : [workspaceId ] , references : [id ] )
111- tasks Task [] @relation (" ProjectTasks " )
102+ id String @id @default (uuid () )
103+ workspaceId String ?
104+ clientId String ? @unique
105+ name String
106+ description String ?
107+ isTrash Boolean @default (false )
108+ createdAt DateTime @default (now () )
109+ updatedAt DateTime ?
110+ workspace Workspace ? @relation (" WorkspaceProjects " , fields : [workspaceId ] , references : [id ] )
111+ tasks Task [] @relation (" ProjectTasks " )
112112}
113113
114114model Task {
115- id String @id @default (uuid () )
115+ id String @id @default (uuid () )
116116 title String
117117 description String ?
118- status String @default (" todo " )
118+ status String @default (" todo " )
119119 projectId String ?
120- project Project ? @relation (" ProjectTasks " , fields : [projectId ] , references : [id ] )
120+ project Project ? @relation (" ProjectTasks " , fields : [projectId ] , references : [id ] )
121121 assigneeId String ?
122122 startDate String ?
123123 dueDate String ?
124+ finishDate DateTime ?
124125 priority String ?
125- assignee TeamMember ? @relation (" TaskMembers " , fields : [assigneeId ] , references : [id ] )
126- isTrash Boolean @default (false )
127- comments Comment [] @relation (" TaskComments " )
128- clientId String ? @unique
129- createdAt DateTime @default (now () )
126+ assignee TeamMember ? @relation (" TaskMembers " , fields : [assigneeId ] , references : [id ] )
127+ isTrash Boolean @default (false )
128+ comments Comment [] @relation (" TaskComments " )
129+ clientId String ? @unique
130+ createdAt DateTime @default (now () )
130131 createdById String ?
131- createdBy TeamMember ? @relation (" TaskCreatedBy " , fields : [createdById ] , references : [id ] )
132+ createdBy TeamMember ? @relation (" TaskCreatedBy " , fields : [createdById ] , references : [id ] )
132133 updatedAt DateTime ?
134+ taskAssignees TaskAssignee []
135+ }
136+
137+ model TaskAssignee {
138+ id String @id @default (uuid () )
139+ taskId String
140+ memberId String
141+
142+ assignedAt DateTime @default (now () )
143+
144+ task Task @relation (fields : [taskId ] , references : [id ] , onDelete : Cascade )
145+ member TeamMember @relation (fields : [memberId ] , references : [id ] , onDelete : Cascade )
146+
147+ @@unique ([taskId , memberId ] )
133148}
134149
135150model Comment {
@@ -145,16 +160,16 @@ model Comment {
145160}
146161
147162model Invite {
148- id String @id @default (uuid () )
149- workspaceId String
150- email String
151- invitedBy String
152- isInvited Boolean @default (false )
153- createdAt DateTime @default (now () )
154- updatedAt DateTime ?
163+ id String @id @default (uuid () )
164+ workspaceId String
165+ email String
166+ invitedBy String
167+ isInvited Boolean @default (false )
168+ createdAt DateTime @default (now () )
169+ updatedAt DateTime ?
155170}
156171
157172enum Role {
158173 USER
159174 ADMIN
160- }
175+ }
0 commit comments