kitar / laravel-dynamodb

A DynamoDB based Eloquent model and Query builder for Laravel.
MIT License
179 stars 27 forks source link

Support BatchGetItem and BatchWriteItem #34

Closed kitar closed 1 year ago

kitar commented 1 year ago

Working on an implementation for BatchGetItem and BatchWriteItem, inspired by these experiments: #25, #32. (Closes #32, closes #33)

Usage

via query builder

$query->batchGetItem($keys);
$query->batchWriteItem($requestItems);

// handy methods for batchWriteItem
$query->batchPutItem($items);
$query->batchDeleteItem($keys);

via Model

MyModel::batchGetItem($keys);
MyModel::batchWriteItem($requestItems);

// handy methods for batchWriteItem
MyModel::batchPutItem($items);
MyModel::batchDeleteItem($keys);

Params

$keys

Array of keys to get or delete. For example:

[
  [
    'PK' => 'ITEM#',
    'SK' => 'ITEM#1',
  ],
  // ...
]

$items

Array of items to put. For example:

[
  [
    'PK' => 'ITEM#',
    'SK' => 'ITEM#1',
    'attribute1' => 'foo',
    'attribute2' => 'bar',
  ],
  // ...
]

$requestItems

RequestItems (not marshaled) to pass directly to BatchWriteItem. For example:

[
  [
    'PutRequest' => [
      'Item' => [
        'PK' => 'ITEM#',
        'SK' => 'ITEM#1',
        'attribute1' => 'foo',
        'attribute2' => 'bar',
      ],
    ],
  ],
  [
    'DeleteRequest' => [
      'Item' => [
        'PK' => 'ITEM#',
        'SK' => 'ITEM#1',
      ],
    ],
  ],
]
negoziator commented 1 year ago

Nice work @kitar 😎😍