fix: avoid double paginated queries

This commit is contained in:
Esdras Renan 2025-11-12 22:42:45 -03:00
parent f9a72c8154
commit 5f7ef3fd03

View file

@ -266,10 +266,8 @@ export async function fetchScopedTicketsByCreatedRange(
const scopedCompanyId = resolveScopedCompanyId(viewer, companyId);
const results: Doc<"tickets">[] = [];
await paginateTickets(
() => {
if (scopedCompanyId) {
return ctx.db
const query = scopedCompanyId
? ctx.db
.query("tickets")
.withIndex("by_tenant_company_created", (q) => {
let range = q.eq("tenantId", tenantId).eq("companyId", scopedCompanyId);
@ -277,9 +275,8 @@ export async function fetchScopedTicketsByCreatedRange(
range = withUpperBound(range, "createdAt", endMs);
return range;
})
.order("desc");
}
return ctx.db
.order("desc")
: ctx.db
.query("tickets")
.withIndex("by_tenant_created", (q) => {
let range = q.eq("tenantId", tenantId);
@ -288,14 +285,14 @@ export async function fetchScopedTicketsByCreatedRange(
return range;
})
.order("desc");
},
(ticket) => {
const snapshot = await query.collect();
for (const ticket of snapshot) {
const createdAt = typeof ticket.createdAt === "number" ? ticket.createdAt : null;
if (createdAt === null) return;
if (createdAt < startMs || createdAt >= endMs) return;
if (createdAt === null) continue;
if (createdAt < startMs || createdAt >= endMs) continue;
results.push(ticket);
},
);
}
return results;
}
@ -311,10 +308,8 @@ export async function fetchScopedTicketsByResolvedRange(
const scopedCompanyId = resolveScopedCompanyId(viewer, companyId);
const results: Doc<"tickets">[] = [];
await paginateTickets(
() => {
if (scopedCompanyId) {
return ctx.db
const query = scopedCompanyId
? ctx.db
.query("tickets")
.withIndex("by_tenant_company_resolved", (q) => {
let range = q.eq("tenantId", tenantId).eq("companyId", scopedCompanyId);
@ -322,9 +317,8 @@ export async function fetchScopedTicketsByResolvedRange(
range = withUpperBound(range, "resolvedAt", endMs);
return range;
})
.order("desc");
}
return ctx.db
.order("desc")
: ctx.db
.query("tickets")
.withIndex("by_tenant_resolved", (q) => {
let range = q.eq("tenantId", tenantId);
@ -333,14 +327,14 @@ export async function fetchScopedTicketsByResolvedRange(
return range;
})
.order("desc");
},
(ticket) => {
const snapshot = await query.collect();
for (const ticket of snapshot) {
const resolvedAt = typeof ticket.resolvedAt === "number" ? ticket.resolvedAt : null;
if (resolvedAt === null) return;
if (resolvedAt < startMs || resolvedAt >= endMs) return;
if (resolvedAt === null) continue;
if (resolvedAt < startMs || resolvedAt >= endMs) continue;
results.push(ticket);
},
);
}
return results;
}