fix: avoid double paginated queries
This commit is contained in:
parent
f9a72c8154
commit
5f7ef3fd03
1 changed files with 38 additions and 44 deletions
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue