in packages/service-library/src/data-providers/website-scan-result-provider.ts [164:211]
private async readPartDocument(websiteScanResult: WebsiteScanResultBase): Promise<WebsiteScanResultPartModel> {
const query = {
query: 'SELECT * FROM c WHERE c.partitionKey = @partitionKey and c.baseId = @baseId and c.itemType = @itemType',
parameters: [
{
name: '@baseId',
value: websiteScanResult.id,
},
{
name: '@partitionKey',
value: websiteScanResult.partitionKey,
},
{
name: '@itemType',
value: ItemType.websiteScanResultPart,
},
],
};
let documentCount = 0;
let elapsedToAggregate = 0;
let partDocument: Partial<WebsiteScanResultPart> = {};
let continuationToken;
do {
const response = (await this.cosmosContainerClient.queryDocuments<WebsiteScanResultPart>(
query,
continuationToken,
)) as CosmosOperationResponse<WebsiteScanResultPart[]>;
client.ensureSuccessStatusCode(response);
continuationToken = response.continuationToken;
documentCount = documentCount + response.item.length;
const start = process.hrtime();
partDocument = await this.websiteScanResultAggregator.mergePartDocuments(response.item, partDocument);
const elapsed = process.hrtime(start);
elapsedToAggregate = elapsedToAggregate + elapsed[0] * 1000 + elapsed[1] / 1000000;
} while (continuationToken !== undefined);
this.logger.logInfo(
`Elapsed ${moment
.utc(moment.duration(elapsedToAggregate).asMilliseconds())
.format('mm:ss.SSS')} while merged ${documentCount} website scan result partials documents`,
{ elapsed: `${elapsedToAggregate}`, documentCount: `${documentCount}` },
);
return partDocument;
}