@campus-labs/prisma-client 0.5.1 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/prisma/clear-database.ts +91 -0
- package/prisma/schema.prisma +73 -8
- package/prisma/seed2.ts +2998 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@campus-labs/prisma-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"postinstall": "npx prisma@6.9.0 generate"
|
|
25
25
|
},
|
|
26
26
|
"prisma": {
|
|
27
|
-
"seed": "ts-node prisma/
|
|
27
|
+
"seed": "ts-node prisma/seed2.ts"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/node": "^24.0.1",
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { PrismaClient } from '@prisma/client';
|
|
2
|
+
|
|
3
|
+
const prisma = new PrismaClient();
|
|
4
|
+
|
|
5
|
+
async function main() {
|
|
6
|
+
console.log('🗑️ Starting database cleanup...');
|
|
7
|
+
|
|
8
|
+
// Delete in order to respect foreign key constraints
|
|
9
|
+
console.log('Deleting notifications...');
|
|
10
|
+
await prisma.notifications.deleteMany();
|
|
11
|
+
|
|
12
|
+
console.log('Deleting user_request_initiative...');
|
|
13
|
+
await prisma.user_request_initiative.deleteMany();
|
|
14
|
+
|
|
15
|
+
console.log('Deleting initiative_invitations...');
|
|
16
|
+
await prisma.initiative_invitations.deleteMany();
|
|
17
|
+
|
|
18
|
+
console.log('Deleting users_programs...');
|
|
19
|
+
await prisma.users_programs.deleteMany();
|
|
20
|
+
|
|
21
|
+
console.log('Deleting user_to_user...');
|
|
22
|
+
await prisma.user_to_user.deleteMany();
|
|
23
|
+
|
|
24
|
+
console.log('Deleting users_soft_skill_instance...');
|
|
25
|
+
await prisma.users_soft_skill_instance.deleteMany();
|
|
26
|
+
|
|
27
|
+
console.log('Deleting soft_skill_instance...');
|
|
28
|
+
await prisma.soft_skill_instance.deleteMany();
|
|
29
|
+
|
|
30
|
+
console.log('Deleting evidences...');
|
|
31
|
+
await prisma.evidences.deleteMany();
|
|
32
|
+
|
|
33
|
+
console.log('Deleting badges_instances...');
|
|
34
|
+
await prisma.badges_instances.deleteMany();
|
|
35
|
+
|
|
36
|
+
console.log('Deleting roles_initiatives_badges...');
|
|
37
|
+
await prisma.roles_initiatives_badges.deleteMany();
|
|
38
|
+
|
|
39
|
+
console.log('Deleting badges...');
|
|
40
|
+
await prisma.badges.deleteMany();
|
|
41
|
+
|
|
42
|
+
console.log('Deleting moments...');
|
|
43
|
+
await prisma.moments.deleteMany();
|
|
44
|
+
|
|
45
|
+
console.log('Deleting user_initiative...');
|
|
46
|
+
await prisma.user_initiative.deleteMany();
|
|
47
|
+
|
|
48
|
+
console.log('Deleting initiatives_soft_skills...');
|
|
49
|
+
await prisma.initiatives_soft_skills.deleteMany();
|
|
50
|
+
|
|
51
|
+
console.log('Deleting initiatives...');
|
|
52
|
+
await prisma.initiatives.deleteMany();
|
|
53
|
+
|
|
54
|
+
console.log('Deleting programs...');
|
|
55
|
+
await prisma.programs.deleteMany();
|
|
56
|
+
|
|
57
|
+
console.log('Deleting users...');
|
|
58
|
+
await prisma.users.deleteMany();
|
|
59
|
+
|
|
60
|
+
console.log('Deleting soft_skills...');
|
|
61
|
+
await prisma.soft_skills.deleteMany();
|
|
62
|
+
|
|
63
|
+
console.log('Deleting typologies...');
|
|
64
|
+
await prisma.typologies.deleteMany();
|
|
65
|
+
|
|
66
|
+
console.log('Deleting areas...');
|
|
67
|
+
await prisma.areas.deleteMany();
|
|
68
|
+
|
|
69
|
+
console.log('Deleting type (badge types)...');
|
|
70
|
+
await prisma.type.deleteMany();
|
|
71
|
+
|
|
72
|
+
console.log('Deleting roles_initiatives...');
|
|
73
|
+
await prisma.roles_initiatives.deleteMany();
|
|
74
|
+
|
|
75
|
+
console.log('Deleting roles_programs...');
|
|
76
|
+
await prisma.roles_programs.deleteMany();
|
|
77
|
+
|
|
78
|
+
console.log('Deleting roles_platform...');
|
|
79
|
+
await prisma.roles_platform.deleteMany();
|
|
80
|
+
|
|
81
|
+
console.log('✅ Database cleared successfully!');
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
main()
|
|
85
|
+
.catch((e) => {
|
|
86
|
+
console.error('❌ Error during cleanup:', e);
|
|
87
|
+
process.exit(1);
|
|
88
|
+
})
|
|
89
|
+
.finally(async () => {
|
|
90
|
+
await prisma.$disconnect();
|
|
91
|
+
});
|
package/prisma/schema.prisma
CHANGED
|
@@ -40,6 +40,10 @@ model badges {
|
|
|
40
40
|
type type @relation(fields: [type_id], references: [id], onDelete: Restrict, onUpdate: Cascade)
|
|
41
41
|
badges_instances badges_instances[]
|
|
42
42
|
roles_initiatives_badges roles_initiatives_badges[]
|
|
43
|
+
|
|
44
|
+
@@index([initiative_id], map: "idx_badges_initiative_active")
|
|
45
|
+
@@index([moment_id], map: "idx_badges_moment")
|
|
46
|
+
@@index([type_id], map: "idx_badges_type")
|
|
43
47
|
}
|
|
44
48
|
|
|
45
49
|
model badges_instances {
|
|
@@ -65,19 +69,29 @@ model badges_instances {
|
|
|
65
69
|
users users? @relation(fields: [user_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
66
70
|
type type @relation(fields: [type_id], references: [id], onDelete: Restrict, onUpdate: NoAction)
|
|
67
71
|
evidences evidences[]
|
|
72
|
+
|
|
73
|
+
@@index([user_id, status], map: "idx_badges_instances_user_status")
|
|
74
|
+
@@index([initiative_id, status], map: "idx_badges_instances_initiative_status")
|
|
75
|
+
@@index([badge_id, status], map: "idx_badges_instances_badge_status")
|
|
76
|
+
@@index([user_id, status, created_at(sort: Desc)], map: "idx_badges_instances_user_full")
|
|
77
|
+
@@index([type_id, status], map: "idx_badges_instances_type_status")
|
|
78
|
+
@@index([given_by], map: "idx_badges_instances_given_by")
|
|
68
79
|
}
|
|
69
80
|
|
|
70
81
|
model evidences {
|
|
71
82
|
id Int @id @default(autoincrement())
|
|
72
83
|
user_id String @db.VarChar(50)
|
|
73
84
|
badge_instance_id Int?
|
|
74
|
-
notes String? @db.VarChar(500)
|
|
85
|
+
notes String? @db.VarChar(500)
|
|
75
86
|
evidence Json?
|
|
76
87
|
created_at DateTime @default(now()) @db.Timestamp(6)
|
|
77
88
|
updated_at DateTime @default(now()) @db.Timestamp(6)
|
|
78
89
|
deleted_at DateTime? @db.Timestamp(6)
|
|
79
90
|
badges_instances badges_instances? @relation(fields: [badge_instance_id], references: [id], onDelete: SetNull, onUpdate: SetNull)
|
|
80
91
|
users users @relation(fields: [user_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
92
|
+
|
|
93
|
+
@@index([badge_instance_id], map: "idx_evidences_badge_instance")
|
|
94
|
+
@@index([user_id, created_at(sort: Desc)], map: "idx_evidences_user")
|
|
81
95
|
}
|
|
82
96
|
|
|
83
97
|
model initiative_invitations {
|
|
@@ -94,6 +108,10 @@ model initiative_invitations {
|
|
|
94
108
|
users_initiative_invitations_inviter_idTousers users @relation("initiative_invitations_inviter_idTousers", fields: [inviter_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
95
109
|
|
|
96
110
|
@@id([invitee_id, inviter_id, initiative_id])
|
|
111
|
+
|
|
112
|
+
@@index([invitee_id, status], map: "idx_invitations_invitee_status")
|
|
113
|
+
@@index([initiative_id, status], map: "idx_invitations_initiative_status")
|
|
114
|
+
@@index([inviter_id, status], map: "idx_invitations_inviter")
|
|
97
115
|
}
|
|
98
116
|
|
|
99
117
|
model initiatives {
|
|
@@ -110,7 +128,7 @@ model initiatives {
|
|
|
110
128
|
is_approved Boolean @default(false)
|
|
111
129
|
program_id Int?
|
|
112
130
|
area_id Int?
|
|
113
|
-
typology_id Int
|
|
131
|
+
typology_id Int
|
|
114
132
|
openings Int?
|
|
115
133
|
created_at DateTime @default(now()) @db.Timestamp(6)
|
|
116
134
|
updated_at DateTime @default(now()) @db.Timestamp(6)
|
|
@@ -130,6 +148,12 @@ model initiatives {
|
|
|
130
148
|
user_request_initiative user_request_initiative[]
|
|
131
149
|
user_initiative user_initiative[]
|
|
132
150
|
user_saved_initiatives user_saved_initiatives[]
|
|
151
|
+
|
|
152
|
+
@@index([start_date, end_date], map: "idx_initiatives_active")
|
|
153
|
+
@@index([area_id], map: "idx_initiatives_area_active")
|
|
154
|
+
@@index([program_id], map: "idx_initiatives_program_active")
|
|
155
|
+
@@index([typology_id], map: "idx_initiatives_typology")
|
|
156
|
+
@@index([inscription_deadline], map: "idx_initiatives_inscription")
|
|
133
157
|
}
|
|
134
158
|
|
|
135
159
|
model initiatives_soft_skills {
|
|
@@ -142,6 +166,9 @@ model initiatives_soft_skills {
|
|
|
142
166
|
soft_skills soft_skills @relation(fields: [soft_skill_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
143
167
|
|
|
144
168
|
@@id([initiative_id, soft_skill_id])
|
|
169
|
+
|
|
170
|
+
@@index([initiative_id], map: "idx_iss_initiative")
|
|
171
|
+
@@index([soft_skill_id], map: "idx_iss_soft_skill")
|
|
145
172
|
}
|
|
146
173
|
|
|
147
174
|
model moments {
|
|
@@ -160,6 +187,9 @@ model moments {
|
|
|
160
187
|
deleted_at DateTime? @db.Timestamp(6)
|
|
161
188
|
badges badges[]
|
|
162
189
|
initiatives initiatives? @relation(fields: [initiative_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
190
|
+
|
|
191
|
+
@@index([initiative_id, order], map: "idx_moments_initiative_order")
|
|
192
|
+
@@index([initiative_id, opened_at, closed_at], map: "idx_moments_active")
|
|
163
193
|
}
|
|
164
194
|
|
|
165
195
|
model programs {
|
|
@@ -176,6 +206,8 @@ model programs {
|
|
|
176
206
|
initiatives initiatives[]
|
|
177
207
|
areas areas? @relation(fields: [area_id], references: [id], onDelete: Restrict, onUpdate: Cascade)
|
|
178
208
|
users_programs users_programs[]
|
|
209
|
+
|
|
210
|
+
@@index([area_id], map: "idx_programs_area")
|
|
179
211
|
}
|
|
180
212
|
|
|
181
213
|
model roles_initiatives {
|
|
@@ -214,7 +246,7 @@ model soft_skill_instance {
|
|
|
214
246
|
img_achieved Json
|
|
215
247
|
img_inactive Json
|
|
216
248
|
description String @db.VarChar(1000)
|
|
217
|
-
points Int
|
|
249
|
+
points Int?
|
|
218
250
|
status String @default("APPROVED") @db.VarChar(20)
|
|
219
251
|
votes Int @default(0)
|
|
220
252
|
soft_skill_id Int?
|
|
@@ -227,6 +259,12 @@ model soft_skill_instance {
|
|
|
227
259
|
soft_skills soft_skills? @relation(fields: [soft_skill_id], references: [id], onDelete: SetNull, onUpdate: SetNull)
|
|
228
260
|
users users? @relation(fields: [user_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
229
261
|
users_soft_skill_instance users_soft_skill_instance[]
|
|
262
|
+
|
|
263
|
+
@@index([user_id, status], map: "idx_soft_skill_instance_user_status")
|
|
264
|
+
@@index([initiative_id, status], map: "idx_soft_skill_instance_initiative_status")
|
|
265
|
+
@@index([soft_skill_id, initiative_id], map: "idx_soft_skill_instance_soft_skill_init")
|
|
266
|
+
@@index([user_id, initiative_id], map: "idx_soft_skill_instance_user_init")
|
|
267
|
+
@@index([votes(sort: Desc)], map: "idx_soft_skill_instance_votes")
|
|
230
268
|
}
|
|
231
269
|
|
|
232
270
|
model soft_skills {
|
|
@@ -269,6 +307,9 @@ model user_request_initiative {
|
|
|
269
307
|
roles_initiatives roles_initiatives @relation(fields: [role_initiative_id], references: [id], onDelete: Restrict, onUpdate: Cascade)
|
|
270
308
|
|
|
271
309
|
@@unique([user_id, initiative_id])
|
|
310
|
+
|
|
311
|
+
@@index([initiative_id, status], map: "idx_uri_initiative_status")
|
|
312
|
+
@@index([user_id, status], map: "idx_uri_user_status")
|
|
272
313
|
}
|
|
273
314
|
|
|
274
315
|
model users {
|
|
@@ -300,7 +341,7 @@ model users {
|
|
|
300
341
|
deleted_at DateTime? @db.Timestamp(6)
|
|
301
342
|
notification_tokens String[] @db.VarChar(5000)
|
|
302
343
|
points Int @default(0)
|
|
303
|
-
ua_iupi String @db.VarChar(50)
|
|
344
|
+
ua_iupi String @unique @db.VarChar(50)
|
|
304
345
|
last_notification_check DateTime @default(now()) @db.Timestamp(6)
|
|
305
346
|
badges_instances badges_instances[]
|
|
306
347
|
evidences evidences[]
|
|
@@ -316,7 +357,11 @@ model users {
|
|
|
316
357
|
received_notifications notifications[] @relation("NotificationReceiver")
|
|
317
358
|
sent_connection_requests user_to_user[] @relation("UserConnectionRequester")
|
|
318
359
|
received_connection_requests user_to_user[] @relation("UserConnectionRequested")
|
|
319
|
-
user_saved_initiatives
|
|
360
|
+
user_saved_initiatives user_saved_initiatives[]
|
|
361
|
+
|
|
362
|
+
@@index([role_platform_id], map: "idx_users_role")
|
|
363
|
+
@@index([points(sort: Desc)], map: "idx_users_points")
|
|
364
|
+
@@index([last_online(sort: Desc)], map: "idx_users_last_online")
|
|
320
365
|
}
|
|
321
366
|
|
|
322
367
|
model user_to_user {
|
|
@@ -331,10 +376,13 @@ model user_to_user {
|
|
|
331
376
|
requested users @relation("UserConnectionRequested", fields: [requested_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
332
377
|
|
|
333
378
|
@@id([requester_id, requested_id])
|
|
379
|
+
|
|
380
|
+
@@index([requester_id, status], map: "idx_user_to_user_requester_status")
|
|
381
|
+
@@index([requested_id, status], map: "idx_user_to_user_requested_status")
|
|
334
382
|
}
|
|
335
383
|
|
|
336
384
|
model user_initiative {
|
|
337
|
-
user_id String @default("1") @db.VarChar(50)
|
|
385
|
+
user_id String @default("1") @db.VarChar(50)
|
|
338
386
|
initiative_id Int
|
|
339
387
|
role_initiative_id Int @default(3)
|
|
340
388
|
is_creator Boolean @default(false)
|
|
@@ -346,6 +394,9 @@ model user_initiative {
|
|
|
346
394
|
users users @relation(fields: [user_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
347
395
|
|
|
348
396
|
@@id([user_id, initiative_id])
|
|
397
|
+
|
|
398
|
+
@@index([user_id, role_initiative_id], map: "idx_user_initiative_user_role")
|
|
399
|
+
@@index([initiative_id, role_initiative_id], map: "idx_user_initiative_initiative_role")
|
|
349
400
|
}
|
|
350
401
|
|
|
351
402
|
model user_saved_initiatives {
|
|
@@ -356,12 +407,14 @@ model user_saved_initiatives {
|
|
|
356
407
|
deleted_at DateTime? @db.Timestamp(6)
|
|
357
408
|
initiatives initiatives @relation(fields: [initiative_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
358
409
|
users users @relation(fields: [user_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
359
|
-
|
|
410
|
+
|
|
360
411
|
@@id([user_id, initiative_id])
|
|
412
|
+
|
|
413
|
+
@@index([user_id, created_at(sort: Desc)], map: "idx_saved_initiatives_user")
|
|
361
414
|
}
|
|
362
415
|
|
|
363
416
|
model users_programs {
|
|
364
|
-
user_id String @default("1") @db.VarChar(50)
|
|
417
|
+
user_id String @default("1") @db.VarChar(50)
|
|
365
418
|
program_id Int
|
|
366
419
|
role_program_id Int @default(2)
|
|
367
420
|
created_at DateTime @default(now()) @db.Timestamp(6)
|
|
@@ -372,6 +425,9 @@ model users_programs {
|
|
|
372
425
|
users users @relation(fields: [user_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
373
426
|
|
|
374
427
|
@@id([user_id, program_id, role_program_id])
|
|
428
|
+
|
|
429
|
+
@@index([user_id], map: "idx_users_programs_user")
|
|
430
|
+
@@index([program_id, role_program_id], map: "idx_users_programs_program")
|
|
375
431
|
}
|
|
376
432
|
|
|
377
433
|
model users_soft_skill_instance {
|
|
@@ -384,6 +440,9 @@ model users_soft_skill_instance {
|
|
|
384
440
|
users users @relation(fields: [user_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
|
385
441
|
|
|
386
442
|
@@id([user_id, soft_skill_instance_id])
|
|
443
|
+
|
|
444
|
+
@@index([user_id], map: "idx_users_ssi_user")
|
|
445
|
+
@@index([soft_skill_instance_id], map: "idx_users_ssi_instance")
|
|
387
446
|
}
|
|
388
447
|
|
|
389
448
|
model roles_initiatives_badges {
|
|
@@ -396,6 +455,9 @@ model roles_initiatives_badges {
|
|
|
396
455
|
roles_initiatives roles_initiatives @relation(fields: [roles_initiatives_id], references: [id], onDelete: Restrict, onUpdate: Cascade)
|
|
397
456
|
|
|
398
457
|
@@id([roles_initiatives_id, badges_id])
|
|
458
|
+
|
|
459
|
+
@@index([badges_id], map: "idx_rib_badge")
|
|
460
|
+
@@index([roles_initiatives_id], map: "idx_rib_role")
|
|
399
461
|
}
|
|
400
462
|
|
|
401
463
|
model notifications {
|
|
@@ -415,6 +477,9 @@ model notifications {
|
|
|
415
477
|
@@index([receiver_id])
|
|
416
478
|
@@index([sent_at(sort: Desc)])
|
|
417
479
|
@@index([sender_id])
|
|
480
|
+
|
|
481
|
+
@@index([receiver_id, sent_at(sort: Desc)], map: "idx_notifications_receiver_sent_v2")
|
|
482
|
+
@@index([sender_id, sent_at(sort: Desc)], map: "idx_notifications_sender_sent")
|
|
418
483
|
}
|
|
419
484
|
|
|
420
485
|
model typologies {
|