fix: referral edge case

This commit is contained in:
vimtor
2026-05-29 14:50:16 +02:00
parent e9966b651f
commit 3f6cb631c3
+18 -11
View File
@@ -377,23 +377,30 @@ export namespace Referral {
.then((rows) => rows[0]) .then((rows) => rows[0])
if (!referral) return if (!referral) return
const result = await tx await tx.insert(ReferralRewardTable).ignore().values({
.insert(ReferralRewardTable)
.ignore()
.values([
{
workspaceID: referral.workspaceID, workspaceID: referral.workspaceID,
referralID: referral.id, referralID: referral.id,
amount: REWARD_AMOUNT, 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
await tx.insert(ReferralRewardTable).ignore().values({
workspaceID: input.workspaceID, workspaceID: input.workspaceID,
referralID: referral.id, referralID: referral.id,
amount: REWARD_AMOUNT, amount: REWARD_AMOUNT,
}, })
])
if (result.rowsAffected === 0) return
}) })
} }