public async readItems()

in packages/azure-services/src/azure-cosmos/cosmos-client-wrapper.ts [125:175]


    public async readItems<T>(
        dbName: string,
        collectionName: string,
        query: cosmos.SqlQuerySpec | string,
        continuationToken?: string,
        throwIfNotSuccess: boolean = true,
    ): Promise<CosmosOperationResponse<T[]>> {
        const container = await this.getContainer(dbName, collectionName);

        try {
            const itemsT: T[] = [];
            const feedOptions: cosmos.FeedOptions = {
                maxItemCount: CosmosClientWrapper.MAXIMUM_ITEM_COUNT,
                continuation: continuationToken,
            };

            const queryIterator = container.items.query(query, feedOptions);

            let partitionQueryResult;
            do {
                partitionQueryResult = await queryIterator.fetchNext();
            } while (
                partitionQueryResult !== undefined &&
                partitionQueryResult.resources !== undefined &&
                partitionQueryResult.resources.length === 0
            );

            if (partitionQueryResult.resources === undefined) {
                return {
                    item: itemsT,
                    statusCode: 204, // HTTP NO CONTENT
                };
            }

            const continuationTokenResponse = partitionQueryResult.continuationToken;

            partitionQueryResult.resources.forEach((item) => {
                itemsT.push(<T>(<unknown>item));
            });

            return {
                item: itemsT,
                statusCode: 200,
                continuationToken: continuationTokenResponse,
            };
        } catch (error) {
            this.logFailedResponse('queryItems', error, { db: dbName, collection: collectionName, query: JSON.stringify(query) });

            return this.handleFailedOperationResponse('queryItems', error, throwIfNotSuccess);
        }
    }