private async readPartDocument()

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;
    }