Skip to content

Commit 8bf6aa9

Browse files
committed
Modify schema to add columns updatedbyId and updatedAt
1 parent 1bf99c7 commit 8bf6aa9

1 file changed

Lines changed: 103 additions & 62 deletions

File tree

prisma/schema.prisma

Lines changed: 103 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
// This is your Prisma schema file,
22
// learn more about it in the docs: https://pris.ly/d/prisma-schema
33

4-
// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
5-
// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init
6-
74
generator client {
85
provider = "prisma-client-js"
96
output = "../src/generated/prisma"
@@ -16,12 +13,12 @@ datasource db {
1613
}
1714

1815
model Member {
19-
id String @id @default(uuid())
16+
id String @id @default(uuid())
2017
name String
21-
email String @unique
22-
phone String? // Single phone number
18+
email String @unique
19+
phone String? // Single phone number
2320
bio String?
24-
profilePhoto String? // URL to profile photo
21+
profilePhoto String? // URL to profile photo
2522
github String?
2623
linkedin String?
2724
twitter String?
@@ -30,44 +27,67 @@ model Member {
3027
codechef String?
3128
codeforces String?
3229
passoutYear DateTime
33-
isApproved Boolean @default(false)
34-
isManager Boolean @default(false)
35-
createdAt DateTime @default(now())
36-
updatedAt DateTime @updatedAt
37-
38-
// Relations
39-
accounts Account[]
40-
achievements MemberAchievement[]
41-
projects MemberProject[]
42-
topicsCreated Topic[] @relation("MemberTopics")
43-
questionsCreated Question[] @relation("MemberQuestionsCreated")
44-
interviews InterviewExperience[]
45-
completedQs CompletedQuestion[]
30+
isApproved Boolean @default(false)
31+
isManager Boolean @default(false)
32+
createdAt DateTime @default(now())
33+
updatedAt DateTime @updatedAt
34+
35+
// Approval audit (self-reference)
36+
approvedBy Member? @relation("MemberApprovals", fields: [approvedById], references: [id])
37+
approvedById String?
38+
approvedMembers Member[] @relation("MemberApprovals")
39+
40+
// Authentication & Relations
41+
accounts Account[]
42+
achievements MemberAchievement[]
43+
projects MemberProject[]
44+
interviews InterviewExperience[]
45+
completedQs CompletedQuestion[]
46+
47+
// Back-relations for audit fields
48+
createdTopics Topic[] @relation("TopicCreatedBy")
49+
updatedTopics Topic[] @relation("TopicUpdatedBy")
50+
createdQuestions Question[] @relation("QuestionCreatedBy")
51+
updatedQuestions Question[] @relation("QuestionUpdatedBy")
52+
createdAchievements Achievement[] @relation("AchievementCreatedBy")
53+
updatedAchievements Achievement[] @relation("AchievementUpdatedBy")
54+
createdProjects Project[] @relation("ProjectCreatedBy")
55+
updatedProjects Project[] @relation("ProjectUpdatedBy")
4656
}
4757

4858
model Account {
49-
id String @id @default(uuid())
59+
id String @id @default(uuid())
5060
provider String
5161
providerAccountId String
52-
password String? // for email/password auth
62+
password String? // for email/password auth
5363
accessToken String?
5464
refreshToken String?
5565
expiresAt DateTime?
56-
createdAt DateTime @default(now())
57-
updatedAt DateTime @updatedAt
66+
createdAt DateTime @default(now())
67+
updatedAt DateTime @updatedAt
5868
59-
member Member @relation(fields: [memberId], references: [id], onDelete: Cascade)
69+
member Member @relation(fields: [memberId], references: [id], onDelete: Cascade)
6070
memberId String
6171
6272
@@unique([provider, providerAccountId])
6373
}
6474

6575
model Achievement {
66-
id Int @id @default(autoincrement())
67-
title String
68-
achievedAt DateTime
69-
imageUrl String?
70-
members MemberAchievement[]
76+
id Int @id @default(autoincrement())
77+
title String
78+
description String
79+
achievedAt DateTime
80+
imageUrl String
81+
82+
// Audit fields
83+
createdBy Member? @relation("AchievementCreatedBy", fields: [createdById], references: [id], onDelete: SetNull)
84+
createdById String?
85+
createdAt DateTime @default(now())
86+
updatedBy Member? @relation("AchievementUpdatedBy", fields: [updatedById], references: [id], onDelete: SetNull)
87+
updatedById String?
88+
updatedAt DateTime @updatedAt
89+
90+
members MemberAchievement[]
7191
}
7292

7393
model MemberAchievement {
@@ -80,46 +100,66 @@ model MemberAchievement {
80100
}
81101

82102
model Project {
83-
id Int @id @default(autoincrement())
84-
name String
85-
imageUrl String?
86-
githubUrl String?
87-
deployUrl String?
88-
members MemberProject[]
103+
id Int @id @default(autoincrement())
104+
name String
105+
imageUrl String?
106+
githubUrl String?
107+
deployUrl String?
108+
109+
// Audit fields
110+
createdBy Member? @relation("ProjectCreatedBy", fields: [createdById], references: [id], onDelete: SetNull)
111+
createdById String?
112+
createdAt DateTime @default(now())
113+
updatedBy Member? @relation("ProjectUpdatedBy", fields: [updatedById], references: [id], onDelete: SetNull)
114+
updatedById String?
115+
updatedAt DateTime @updatedAt
116+
117+
members MemberProject[]
89118
}
90119

91120
model MemberProject {
92-
member Member @relation(fields: [memberId], references: [id], onDelete: Cascade)
121+
member Member @relation(fields: [memberId], references: [id], onDelete: Cascade)
93122
memberId String
94-
project Project @relation(fields: [projectId], references: [id], onDelete: Cascade)
123+
project Project @relation(fields: [projectId], references: [id], onDelete: Cascade)
95124
projectId Int
96125
97126
@@id([memberId, projectId])
98127
}
99128

100129
model Topic {
101-
id Int @id @default(autoincrement())
130+
id Int @id @default(autoincrement())
102131
title String
103132
description String
104-
/// Who created this topic; optional to allow system-generated topics or imports
105-
createdBy Member? @relation("MemberTopics", fields: [createdById], references: [id], onDelete: SetNull)
133+
134+
// Audit fields
135+
createdBy Member? @relation("TopicCreatedBy", fields: [createdById], references: [id], onDelete: SetNull)
106136
createdById String?
107-
createdAt DateTime @default(now())
108-
updatedAt DateTime @updatedAt
109-
questions Question[]
137+
createdAt DateTime @default(now())
138+
updatedBy Member? @relation("TopicUpdatedBy", fields: [updatedById], references: [id], onDelete: SetNull)
139+
updatedById String?
140+
updatedAt DateTime @updatedAt
141+
142+
questions Question[]
110143
}
111144

112145
model Question {
113146
id Int @id @default(autoincrement())
114147
questionName String
115148
difficulty Difficulty
116149
link String
117-
topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)
118-
topicId Int
119-
// Who added this question; optional in case the member is deleted
120-
createdBy Member? @relation("MemberQuestionsCreated", fields: [createdById], references: [id], onDelete: SetNull)
121-
createdById String?
122-
completedBy CompletedQuestion[]
150+
151+
topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)
152+
topicId Int
153+
154+
// Audit fields
155+
createdBy Member? @relation("QuestionCreatedBy", fields: [createdById], references: [id], onDelete: SetNull)
156+
createdById String?
157+
createdAt DateTime @default(now())
158+
updatedBy Member? @relation("QuestionUpdatedBy", fields: [updatedById], references: [id], onDelete: SetNull)
159+
updatedById String?
160+
updatedAt DateTime @updatedAt
161+
162+
completedBy CompletedQuestion[]
123163
}
124164

125165
enum Difficulty {
@@ -129,26 +169,27 @@ enum Difficulty {
129169
}
130170

131171
model InterviewExperience {
132-
id Int @id @default(autoincrement())
133-
company String
134-
role String
135-
verdict Verdict
136-
content String
172+
id Int @id @default(autoincrement())
173+
company String
174+
role String
175+
verdict Verdict
176+
content String
137177
isAnonymous Boolean
138-
member Member @relation(fields: [memberId], references: [id], onDelete: Cascade)
139-
memberId String
178+
member Member @relation(fields: [memberId], references: [id], onDelete: Cascade)
179+
memberId String
140180
}
181+
141182
enum Verdict {
142183
Selected
143184
Rejected
144185
Pending
145186
}
146187

147188
model CompletedQuestion {
148-
member Member @relation(fields: [memberId], references: [id], onDelete: Cascade)
149-
memberId String
150-
question Question @relation(fields: [questionId], references: [id], onDelete: Cascade)
151-
questionId Int
189+
member Member @relation(fields: [memberId], references: [id], onDelete: Cascade)
190+
memberId String
191+
question Question @relation(fields: [questionId], references: [id], onDelete: Cascade)
192+
questionId Int
152193
153194
@@id([memberId, questionId])
154-
}
195+
}

0 commit comments

Comments
 (0)