Skip to main content

Function: makeScanResult()

makeScanResult<Options>(options, getScanIterator): ScanResult<KeyTypeForScanOptions<Options>, ReadonlyJSONValue>

A helper function that makes it easier to implement ReadTransaction.scan with a custom backend.

If you are implementing a custom backend and have an in memory pending async iterable we provide two helper functions to make it easier to merge these together. mergeAsyncIterables and filterAsyncIterable.

For example:

const scanResult = makeScanResult(
options,
options.indexName
? () => {
throw Error('not implemented');
}
: fromKey => {
const persisted: AsyncIterable<Entry<ReadonlyJSONValue>> = ...;
const pending: AsyncIterable<Entry<ReadonlyJSONValue | undefined>> = ...;
const iter = await mergeAsyncIterables(persisted, pending);
const filteredIter = await filterAsyncIterable(
iter,
entry => entry[1] !== undefined,
);
return filteredIter;
},
);

Type Parameters

Options extends ScanOptions

Parameters

options

Options

getScanIterator

Options extends ScanIndexOptions ? GetIndexScanIterator : GetScanIterator

Returns

ScanResult<KeyTypeForScanOptions<Options>, ReadonlyJSONValue>