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