Skip to content

Commit

Permalink
Merge pull request #1211 from elie222/fix/reply-zero-pagination-distinct
Browse files Browse the repository at this point in the history
  • Loading branch information
Elie Steinbock authored and GitHub committed Jan 6, 2026
2 parents d8a8352 + 140a1bc commit 17dd430
Showing 1 changed file with 27 additions and 30 deletions.
57 changes: 27 additions & 30 deletions apps/web/app/(app)/[emailAccountId]/reply-zero/fetch-trackers.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import prisma from "@/utils/prisma";
import { Prisma, type ThreadTracker } from "@/generated/prisma/client";
import type { ThreadTrackerType } from "@/generated/prisma/enums";
import { getDateFilter, type TimeRange } from "./date-filter";

Expand All @@ -18,37 +19,33 @@ export async function getPaginatedThreadTrackers({
const skip = (page - 1) * PAGE_SIZE;
const dateFilter = getDateFilter(timeRange);

const dateClause = dateFilter
? Prisma.sql`AND "sentAt" <= ${dateFilter.lte}`
: Prisma.empty;

const [trackers, total] = await Promise.all([
prisma.threadTracker.findMany({
where: {
emailAccountId,
resolved: false,
type,
sentAt: dateFilter,
},
orderBy: {
createdAt: "desc",
},
distinct: ["threadId"],
take: PAGE_SIZE,
skip,
}),
dateFilter
? prisma.$queryRaw<[{ count: bigint }]>`
SELECT COUNT(DISTINCT "threadId") as count
FROM "ThreadTracker"
WHERE "emailAccountId" = ${emailAccountId}
AND "resolved" = false
AND "type" = ${type}::text::"ThreadTrackerType"
AND "sentAt" <= ${dateFilter.lte}
`
: prisma.$queryRaw<[{ count: bigint }]>`
SELECT COUNT(DISTINCT "threadId") as count
FROM "ThreadTracker"
WHERE "emailAccountId" = ${emailAccountId}
AND "resolved" = false
AND "type" = ${type}::text::"ThreadTrackerType"
`,
prisma.$queryRaw<ThreadTracker[]>`
SELECT * FROM (
SELECT DISTINCT ON ("threadId") *
FROM "ThreadTracker"
WHERE "emailAccountId" = ${emailAccountId}
AND "resolved" = false
AND "type" = ${type}::text::"ThreadTrackerType"
${dateClause}
ORDER BY "threadId", "createdAt" DESC
) AS distinct_threads
ORDER BY "createdAt" DESC
LIMIT ${PAGE_SIZE}
OFFSET ${skip}
`,
prisma.$queryRaw<[{ count: bigint }]>`
SELECT COUNT(DISTINCT "threadId") as count
FROM "ThreadTracker"
WHERE "emailAccountId" = ${emailAccountId}
AND "resolved" = false
AND "type" = ${type}::text::"ThreadTrackerType"
${dateClause}
`,
]);

const count = Number(total?.[0]?.count);
Expand Down

0 comments on commit 17dd430

Please sign in to comment.