public async upsertItems()

in packages/azure-services/src/azure-cosmos/cosmos-client-wrapper.ts [29:67]


    public async upsertItems<T extends CosmosDocument>(
        items: T[],
        dbName: string,
        collectionName: string,
        partitionKey: string,
        throwIfNotSuccess: boolean = true,
    ): Promise<CosmosOperationResponse<T>[]> {
        const container = await this.getContainer(dbName, collectionName);
        const chunks = System.chunkArray(items, 10);
        const responses: CosmosOperationResponse<T>[] = [];

        for (const chunk of chunks) {
            await Promise.all(
                chunk.map(async (item) => {
                    try {
                        this.assignPartitionKey(item, partitionKey);
                        const response = await container.items.upsert(item, this.getOptions(item));
                        const itemT = <T>(<unknown>response.resource);
                        responses.push({
                            item: itemT,
                            statusCode: 200,
                        });
                    } catch (error) {
                        this.logFailedResponse('upsertItems', error, {
                            db: dbName,
                            collection: collectionName,
                            itemId: item.id,
                            partitionKey: partitionKey,
                            item: JSON.stringify(item),
                        });

                        responses.push(this.handleFailedOperationResponse('upsertItems', error, throwIfNotSuccess, item.id));
                    }
                }),
            );
        }

        return responses;
    }