batchWrite method

Future<BatchWriteOutput> batchWrite({
  1. required Map<String, List<Write>> requestItems,
  2. ReturnConsumedCapacity? returnConsumedCapacity,
  3. ReturnItemCollectionMetrics? returnItemCollectionMetrics,
})

Puts or deletes multiple items in one or more tables by delegating to DynamoDB.batchWriteItem().

Implementation

Future<BatchWriteOutput> batchWrite({
  required Map<String, List<Write>> requestItems,
  ReturnConsumedCapacity? returnConsumedCapacity,
  ReturnItemCollectionMetrics? returnItemCollectionMetrics,
}) async {
  final ri = requestItems.map(
    (k, v) => MapEntry(
      k,
      v
          .map(
            (e) => WriteRequest(
              deleteRequest: e.deleteKey?.let((d) => DeleteRequest(
                    key: d.fromJsonToAttributeValue(),
                  )),
              putRequest: e.putItem?.let((p) => PutRequest(
                    item: p.fromJsonToAttributeValue(),
                  )),
            ),
          )
          .toList(),
    ),
  );
  final wr = await dynamoDB.batchWriteItem(
    requestItems: ri,
    returnConsumedCapacity: returnConsumedCapacity,
    returnItemCollectionMetrics: returnItemCollectionMetrics,
  );

  return BatchWriteOutput(
    consumedCapacity: wr.consumedCapacity ?? [],
    unprocessedItems: wr.unprocessedItems?.map((k, v) => MapEntry(
              k,
              v
                  .map((e) => Write(
                        deleteKey:
                            e.deleteRequest?.let((d) => d.key.toJson()),
                        putItem: e.putRequest?.let((p) => p.item.toJson()),
                      ))
                  .toList(),
            )) ??
        {},
    itemCollectionMetrics: wr.itemCollectionMetrics?.map((k, v) => MapEntry(
              k,
              v
                  .map((e) => ItemCollectionMetricsDC(
                        itemCollectionKey: e.itemCollectionKey.toJson() ?? {},
                        sizeEstimateRangeGB: e.sizeEstimateRangeGB,
                      ))
                  .toList(),
            )) ??
        {},
  );
}