diff --git a/packages/console/core/src/referral.ts b/packages/console/core/src/referral.ts index 7fac9e1b989..7d683f8d88a 100644 --- a/packages/console/core/src/referral.ts +++ b/packages/console/core/src/referral.ts @@ -59,7 +59,30 @@ export namespace Referral { const accountID = Actor.account() const code = await ensureCode(workspaceID) const rows = await Database.use(async (tx) => { - const [invites, inviteeReferral] = await Promise.all([ + const [rewards, invites, inviteeReferral, inviteeRewards] = await Promise.all([ + tx + .select({ + referralID: ReferralRewardTable.referralID, + workspaceID: ReferralRewardTable.workspaceID, + referralWorkspaceID: ReferralTable.workspaceID, + inviteeEmail: AuthTable.subject, + amount: ReferralRewardTable.amount, + timeCreated: ReferralRewardTable.timeCreated, + timeApplied: ReferralRewardTable.timeApplied, + }) + .from(ReferralRewardTable) + .innerJoin(ReferralTable, eq(ReferralTable.id, ReferralRewardTable.referralID)) + .innerJoin( + AuthTable, + and(eq(AuthTable.accountID, ReferralTable.inviteeAccountID), eq(AuthTable.provider, "email")), + ) + .where( + and( + eq(ReferralRewardTable.workspaceID, workspaceID), + isNull(ReferralRewardTable.timeDeleted), + isNull(ReferralTable.timeDeleted), + ), + ), tx .select({ id: ReferralTable.id, inviteeEmail: AuthTable.subject, timeCreated: ReferralTable.timeCreated }) .from(ReferralTable) @@ -83,20 +106,19 @@ export namespace Referral { .where(and(eq(ReferralTable.inviteeAccountID, accountID), isNull(ReferralTable.timeDeleted))) .orderBy(asc(UserTable.timeCreated)) .then((rows) => rows.find((row) => row.inviterEmail) ?? rows[0]), + tx + .select({ referralID: ReferralRewardTable.referralID }) + .from(ReferralRewardTable) + .innerJoin(ReferralTable, eq(ReferralTable.id, ReferralRewardTable.referralID)) + .where( + and( + eq(ReferralTable.inviteeAccountID, accountID), + isNull(ReferralRewardTable.timeDeleted), + isNull(ReferralTable.timeDeleted), + ), + ), ]) - // Hide reward history until the referral_id index can be deployed and this lookup restored. - const rewards: { - referralID: string - workspaceID: string - referralWorkspaceID: string - inviteeEmail: string - amount: number - timeCreated: Date - timeApplied: Date | null - }[] = [] - // Hide pending invitee rewards until the referral_id index can be deployed and this lookup restored. - const inviteeRewards = inviteeReferral ? [{ referralID: inviteeReferral.id }] : [] return { inviteeReferral, inviteeRewards, invites, rewards } })