CognxSafeTrack commited on
Commit ·
2e888dc
1
Parent(s): de6a95b
Fix: Add Cascade Delete for UserBadge and TeamMember during INSCRIPTION reset
Browse files
apps/api/src/services/whatsapp.ts
CHANGED
|
@@ -106,6 +106,8 @@ export class WhatsAppService {
|
|
| 106 |
if (this.isFuzzyMatch(normalizedText, 'INSCRIPTION')) {
|
| 107 |
// 🚨 COUPE-CIRCUIT #1: Kill any active Time-Travel context BEFORE resetting progression
|
| 108 |
await clearTimeTravelContext(user.id);
|
|
|
|
|
|
|
| 109 |
await prisma.enrollment.deleteMany({ where: { userId: user.id } });
|
| 110 |
await prisma.userProgress.deleteMany({ where: { userId: user.id } });
|
| 111 |
await prisma.response.deleteMany({ where: { userId: user.id } });
|
|
|
|
| 106 |
if (this.isFuzzyMatch(normalizedText, 'INSCRIPTION')) {
|
| 107 |
// 🚨 COUPE-CIRCUIT #1: Kill any active Time-Travel context BEFORE resetting progression
|
| 108 |
await clearTimeTravelContext(user.id);
|
| 109 |
+
await (prisma as any).userBadge.deleteMany({ where: { userProgress: { userId: user.id } } });
|
| 110 |
+
await (prisma as any).teamMember.deleteMany({ where: { businessProfile: { userId: user.id } } });
|
| 111 |
await prisma.enrollment.deleteMany({ where: { userId: user.id } });
|
| 112 |
await prisma.userProgress.deleteMany({ where: { userId: user.id } });
|
| 113 |
await prisma.response.deleteMany({ where: { userId: user.id } });
|
apps/whatsapp-worker/src/services/whatsapp-logic.ts
CHANGED
|
@@ -124,6 +124,8 @@ export class WhatsAppLogic {
|
|
| 124 |
if (this.isFuzzyMatch(normalizedText, 'INSCRIPTION')) {
|
| 125 |
// 🚨 COUPE-CIRCUIT #1: Kill Time-Travel context BEFORE any DB reset
|
| 126 |
await clearTimeTravelContext(user.id, connection as any);
|
|
|
|
|
|
|
| 127 |
await prisma.enrollment.deleteMany({ where: { userId: user.id } });
|
| 128 |
await prisma.userProgress.deleteMany({ where: { userId: user.id } });
|
| 129 |
await prisma.response.deleteMany({ where: { userId: user.id } });
|
|
|
|
| 124 |
if (this.isFuzzyMatch(normalizedText, 'INSCRIPTION')) {
|
| 125 |
// 🚨 COUPE-CIRCUIT #1: Kill Time-Travel context BEFORE any DB reset
|
| 126 |
await clearTimeTravelContext(user.id, connection as any);
|
| 127 |
+
await (prisma as any).userBadge.deleteMany({ where: { userProgress: { userId: user.id } } });
|
| 128 |
+
await (prisma as any).teamMember.deleteMany({ where: { businessProfile: { userId: user.id } } });
|
| 129 |
await prisma.enrollment.deleteMany({ where: { userId: user.id } });
|
| 130 |
await prisma.userProgress.deleteMany({ where: { userId: user.id } });
|
| 131 |
await prisma.response.deleteMany({ where: { userId: user.id } });
|
packages/database/prisma/schema.prisma
CHANGED
|
@@ -57,7 +57,7 @@ model TeamMember {
|
|
| 57 |
name String?
|
| 58 |
role String?
|
| 59 |
bio String?
|
| 60 |
-
businessProfile BusinessProfile @relation(fields: [businessProfileId], references: [id])
|
| 61 |
}
|
| 62 |
|
| 63 |
model Track {
|
|
@@ -250,5 +250,5 @@ model UserBadge {
|
|
| 250 |
userProgressId String
|
| 251 |
name String
|
| 252 |
earnedAt DateTime @default(now())
|
| 253 |
-
userProgress UserProgress @relation(fields: [userProgressId], references: [id])
|
| 254 |
}
|
|
|
|
| 57 |
name String?
|
| 58 |
role String?
|
| 59 |
bio String?
|
| 60 |
+
businessProfile BusinessProfile @relation(fields: [businessProfileId], references: [id], onDelete: Cascade)
|
| 61 |
}
|
| 62 |
|
| 63 |
model Track {
|
|
|
|
| 250 |
userProgressId String
|
| 251 |
name String
|
| 252 |
earnedAt DateTime @default(now())
|
| 253 |
+
userProgress UserProgress @relation(fields: [userProgressId], references: [id], onDelete: Cascade)
|
| 254 |
}
|