Răsfoiți Sursa

Revert "fix slow queries"

Frank 1 săptămână în urmă
părinte
comite
def14d96ef
1 a modificat fișierele cu 35 adăugiri și 13 ștergeri
  1. 35 13
      packages/console/core/src/referral.ts

+ 35 - 13
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 }
     })