Quellcode durchsuchen

fix: referral edge case

vimtor vor 2 Monaten
Ursprung
Commit
3f6cb631c3
1 geänderte Dateien mit 23 neuen und 16 gelöschten Zeilen
  1. 23 16
      packages/console/core/src/referral.ts

+ 23 - 16
packages/console/core/src/referral.ts

@@ -377,23 +377,30 @@ export namespace Referral {
         .then((rows) => rows[0])
       if (!referral) return
 
-      const result = await tx
-        .insert(ReferralRewardTable)
-        .ignore()
-        .values([
-          {
-            workspaceID: referral.workspaceID,
-            referralID: referral.id,
-            amount: REWARD_AMOUNT,
-          },
-          {
-            workspaceID: input.workspaceID,
-            referralID: referral.id,
-            amount: REWARD_AMOUNT,
-          },
-        ])
+      await tx.insert(ReferralRewardTable).ignore().values({
+        workspaceID: referral.workspaceID,
+        referralID: referral.id,
+        amount: REWARD_AMOUNT,
+      })
+
+      const existingInviteeReward = await tx
+        .select({ workspaceID: ReferralRewardTable.workspaceID })
+        .from(ReferralRewardTable)
+        .where(
+          and(
+            eq(ReferralRewardTable.referralID, referral.id),
+            sql`${ReferralRewardTable.workspaceID} <> ${referral.workspaceID}`,
+            isNull(ReferralRewardTable.timeDeleted),
+          ),
+        )
+        .then((rows) => rows[0])
+      if (existingInviteeReward) return
 
-      if (result.rowsAffected === 0) return
+      await tx.insert(ReferralRewardTable).ignore().values({
+        workspaceID: input.workspaceID,
+        referralID: referral.id,
+        amount: REWARD_AMOUNT,
+      })
     })
   }