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