function getAttendeesPage
getAttendeesPage(unnamed 0: { listingIds: number[] | null; sort: AttendeeSort; page: number; }): Promise<AttendeesPage>

Get one page of attendees — with every one of their booking rows — for the admin attendees browser.

Pagination counts ATTENDEES, not booking lines: the inner subquery selects one page of attendee ids, ordered by id — AUTOINCREMENT, so co-monotonic with the registration date but unique, making paging deterministic and index-backed — and the outer query returns every listing_attendees line for those attendees. A grouped attendee row therefore always carries their complete listings list and never splits across a page boundary. When listingIds is given it decides WHICH attendees match (any booking on those listings); the returned rows still cover all of a matched attendee's listings.

The page size is fixed; callers pass a zero-based page. One extra attendee is read to report hasNext without a separate count query, then trimmed off. PII stays encrypted — decrypt with decryptAttendees before display.

Parameters

unnamed 0: { listingIds: number[] | null; sort: AttendeeSort; page: number; }

Return Type

Promise<AttendeesPage>

Usage

import { getAttendeesPage } from "doc.ts";