From d0fcaad22c1cdd8e49bf27eea3fad7b9e534934a Mon Sep 17 00:00:00 2001 From: Srejoye Date: Mon, 1 Jun 2026 22:29:02 +0530 Subject: [PATCH] fix(analytics): use COUNT(DISTINCT viewer_id) for uniqueViewers instead of groupBy composite key --- apps/backend/src/routes/analytics.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/apps/backend/src/routes/analytics.ts b/apps/backend/src/routes/analytics.ts index a2615cf8..e834eef0 100644 --- a/apps/backend/src/routes/analytics.ts +++ b/apps/backend/src/routes/analytics.ts @@ -69,13 +69,14 @@ export async function analyticsRoutes( // Count unique viewers // In raw SQL this is `SELECT COUNT(DISTINCT viewer_id) FROM card_views WHERE owner_id = ?` // Prisma group-by as workaround: - const uniqueViewersQuery = - await app.prisma.cardView.groupBy({ - by: ['viewerId', 'viewerIp'], - where: { ownerId: userId }, - }); - - const uniqueViewers = uniqueViewersQuery.length; + const uniqueViewersQuery = await app.prisma.$queryRaw<[{ count: bigint }]>` + SELECT COUNT(DISTINCT viewer_id) AS count + FROM card_views + WHERE owner_id = ${userId} + AND viewer_id IS NOT NULL + `; + + const uniqueViewers = Number(uniqueViewersQuery[0]?.count ?? 0); return { totalViews,