Files
Katia Bulatova 85d93ffe0e perf(webapp): skip queue search count (#3925)
### Summary

Queue searches previously executed both a count query and a page query
with identical filters. This PR switches filtered searches to `hasMore`
pagination, removing the extra count query while preserving existing
search behavior.

### Testing

cd apps/webapp && pnpm run test ./test/queueListSearch.test.ts --run
passes


### Changelog

Improve filtered queue search performance.
2026-06-14 00:19:19 +02:00

37 lines
1.2 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { toOffsetLimitQueueListPagination } from "~/presenters/v3/queueListPagination.server";
describe("toOffsetLimitQueueListPagination", () => {
it("passes through unfiltered pagination unchanged", () => {
expect(
toOffsetLimitQueueListPagination(
{ mode: "unfiltered", currentPage: 2, totalPages: 4, count: 80 },
{ itemsOnPage: 25, perPage: 25 }
)
).toEqual({ currentPage: 2, totalPages: 4, count: 80 });
});
it("maps filtered pagination to the legacy offset-limit shape", () => {
expect(
toOffsetLimitQueueListPagination(
{ mode: "filtered", currentPage: 1, hasMore: true },
{ itemsOnPage: 25, perPage: 25 }
)
).toEqual({ currentPage: 1, totalPages: 2, count: 26 });
expect(
toOffsetLimitQueueListPagination(
{ mode: "filtered", currentPage: 1, hasMore: false },
{ itemsOnPage: 10, perPage: 25 }
)
).toEqual({ currentPage: 1, totalPages: 1, count: 10 });
expect(
toOffsetLimitQueueListPagination(
{ mode: "filtered", currentPage: 2, hasMore: false },
{ itemsOnPage: 5, perPage: 25 }
)
).toEqual({ currentPage: 2, totalPages: 2, count: 30 });
});
});