diff --git a/apps/backend/src/routes/analytics.ts b/apps/backend/src/routes/analytics.ts index a2615cf..e834eef 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,