cosmos-explorer/src/Common/IteratorUtilities.ts
2020-05-25 21:30:55 -05:00

33 lines
1001 B
TypeScript

import { QueryResults } from "../Contracts/ViewModels";
interface QueryResponse {
resources: any[];
hasMoreResults: boolean;
activityId: string;
requestCharge: number;
}
export interface MinimalQueryIterator {
fetchNext: () => Promise<QueryResponse>;
}
// Pick<QueryIterator<any>, "fetchNext">;
export function nextPage(documentsIterator: MinimalQueryIterator, firstItemIndex: number): Promise<QueryResults> {
return documentsIterator.fetchNext().then(response => {
const documents = response.resources;
const headers = (response as any).headers || {}; // TODO this is a private key. Remove any
const itemCount = (documents && documents.length) || 0;
return {
documents,
hasMoreResults: response.hasMoreResults,
itemCount,
firstItemIndex: Number(firstItemIndex) + 1,
lastItemIndex: Number(firstItemIndex) + Number(itemCount),
headers,
activityId: response.activityId,
requestCharge: response.requestCharge
};
});
}