From af27789f8e830f7d75fcc446a23fffab091a18c9 Mon Sep 17 00:00:00 2001 From: SasankAVST Date: Mon, 16 Jun 2025 12:12:06 -0400 Subject: [PATCH 1/4] feat(SD-2145): added required webhook emitters tables --- prisma/schema.prisma | 88 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 77 insertions(+), 11 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index d5ffdb7..a7f10d9 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -31,9 +31,9 @@ model Product { subscriptions Subscription[] currencies CurrenciesOnProduct[] updatedAt DateTime @default(now()) @updatedAt + archivedAt DateTime? isTest Boolean @default(false) coupons Coupon[] - archivedAt DateTime? @@index([organisation]) @@index([organisationPaymentIntegrationUuid]) @@ -681,16 +681,6 @@ model CouponsOnPlans { @@index([planUuid]) } -model WebhookEvents { - uuid String @id @default(uuid()) - objectId String - eventType String - reason String - payload Json - isTest Boolean - createdAt DateTime @default(now()) -} - model CouponsOnSubscriptions { coupon Coupon @relation(fields: [couponUuid], references: [uuid]) couponUuid String @@ -700,4 +690,80 @@ model CouponsOnSubscriptions { @@id([couponUuid, subscriptionUuid]) @@index([couponUuid]) @@index([subscriptionUuid]) +} + +model WebhookDestinationEventType { + uuid String @id @default(uuid()) + event String + destinationUuid String + destination WebhookDestination @relation(fields: [destinationUuid], references: [uuid], onDelete: Cascade) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + organisation String + + @@unique([event, destinationUuid]) +} + +model WebhookDestination { + uuid String @id @default(uuid()) + url String + organisation String + eventTypes WebhookDestinationEventType[] + secret Json + events WebhookDestinationEvent[] + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} + +model WebhookEvent { + uuid String @id @default(uuid()) + organisation String + type String + payload Json + destinationEvents WebhookDestinationEvent[] + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} + +model WebhookDestinationEvent { + uuid String @id @default(uuid()) + eventUuid String + event WebhookEvent @relation(fields: [eventUuid], references: [uuid], onDelete: Cascade) + destinationUuid String + destination WebhookDestination @relation(fields: [destinationUuid], references: [uuid], onDelete: Cascade) + attempts WebhookEventAttempt[] + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + organisation String + + @@unique([eventUuid, destinationUuid]) +} + +enum WebhookEventAttemptStatus { + SUCCESS + ERROR + PENDING +} + +model WebhookEventAttempt { + uuid String @id @default(uuid()) + destinationEventUuid String + destinationEvent WebhookDestinationEvent @relation(fields: [destinationEventUuid], references: [uuid], onDelete: Cascade) + attempt Int + status WebhookEventAttemptStatus @default(PENDING) + message String? + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + scheduledAt DateTime? + organisation String +} + +model WebhookEvents { + uuid String @id @default(uuid()) + objectId String + eventType String + reason String + payload Json + isTest Boolean + createdAt DateTime @default(now()) } \ No newline at end of file From 911fa3f4322dba9342c4738a8f9178530b810b02 Mon Sep 17 00:00:00 2001 From: SasankAVST Date: Tue, 17 Jun 2025 09:47:07 -0400 Subject: [PATCH 2/4] chore: move webhook event table location --- prisma/schema.prisma | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index a7f10d9..7d09112 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -681,6 +681,16 @@ model CouponsOnPlans { @@index([planUuid]) } +model WebhookEvents { + uuid String @id @default(uuid()) + objectId String + eventType String + reason String + payload Json + isTest Boolean + createdAt DateTime @default(now()) +} + model CouponsOnSubscriptions { coupon Coupon @relation(fields: [couponUuid], references: [uuid]) couponUuid String @@ -756,14 +766,4 @@ model WebhookEventAttempt { updatedAt DateTime @updatedAt scheduledAt DateTime? organisation String -} - -model WebhookEvents { - uuid String @id @default(uuid()) - objectId String - eventType String - reason String - payload Json - isTest Boolean - createdAt DateTime @default(now()) } \ No newline at end of file From 15619cb8fe3b1c5744a0f6345b25f865a7257d94 Mon Sep 17 00:00:00 2001 From: SasankAVST Date: Tue, 24 Jun 2025 10:33:05 -0400 Subject: [PATCH 3/4] feat: using prismas uuid7 function --- prisma/schema.prisma | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 7d09112..de734f6 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -703,7 +703,7 @@ model CouponsOnSubscriptions { } model WebhookDestinationEventType { - uuid String @id @default(uuid()) + uuid String @id @default(uuid(7)) event String destinationUuid String destination WebhookDestination @relation(fields: [destinationUuid], references: [uuid], onDelete: Cascade) @@ -715,7 +715,7 @@ model WebhookDestinationEventType { } model WebhookDestination { - uuid String @id @default(uuid()) + uuid String @id @default(uuid(7)) url String organisation String eventTypes WebhookDestinationEventType[] @@ -726,7 +726,7 @@ model WebhookDestination { } model WebhookEvent { - uuid String @id @default(uuid()) + uuid String @id @default(uuid(7)) organisation String type String payload Json @@ -736,7 +736,7 @@ model WebhookEvent { } model WebhookDestinationEvent { - uuid String @id @default(uuid()) + uuid String @id @default(uuid(7)) eventUuid String event WebhookEvent @relation(fields: [eventUuid], references: [uuid], onDelete: Cascade) destinationUuid String @@ -756,7 +756,7 @@ enum WebhookEventAttemptStatus { } model WebhookEventAttempt { - uuid String @id @default(uuid()) + uuid String @id @default(uuid(7)) destinationEventUuid String destinationEvent WebhookDestinationEvent @relation(fields: [destinationEventUuid], references: [uuid], onDelete: Cascade) attempt Int From eb5ee6a3ff70212413079e54a066fd1ee40b6e08 Mon Sep 17 00:00:00 2001 From: SasankAVST Date: Mon, 30 Jun 2025 14:48:22 -0400 Subject: [PATCH 4/4] feat: added deletedAt column --- prisma/schema.prisma | 1 + 1 file changed, 1 insertion(+) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index de734f6..1cd0a25 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -709,6 +709,7 @@ model WebhookDestinationEventType { destination WebhookDestination @relation(fields: [destinationUuid], references: [uuid], onDelete: Cascade) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt + deletedAt DateTime? organisation String @@unique([event, destinationUuid])