Skip to content

Commit 89efb21

Browse files
authored
Merge pull request #40 from raphaelcangucu/fixLastEvaluatedKey
Error with the Dynamo Pagination
2 parents a2223b8 + f89077f commit 89efb21

File tree

2 files changed

+52
-3
lines changed

2 files changed

+52
-3
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
namespace Kitar\Dynamodb\Helpers;
4+
5+
use Illuminate\Support\Collection as BaseCollection;
6+
7+
class Collection extends BaseCollection
8+
{
9+
/**
10+
* @var array
11+
*/
12+
private $meta;
13+
14+
/**
15+
* @param array $meta
16+
* @return $this
17+
*/
18+
public function setMeta($meta)
19+
{
20+
$this->meta = $meta;
21+
22+
return $this;
23+
}
24+
25+
/**
26+
* Get meta data.
27+
*/
28+
public function getMeta()
29+
{
30+
return $this->meta;
31+
}
32+
33+
/**
34+
* Get LastEvaluatedKey from meta
35+
*/
36+
public function getLastEvaluatedKey()
37+
{
38+
return $this->meta['LastEvaluatedKey'] ?? null;
39+
}
40+
}

src/Kitar/Dynamodb/Query/Processor.php

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
namespace Kitar\Dynamodb\Query;
44

5-
use Aws\Result;
65
use Aws\DynamoDb\Marshaler;
6+
use Aws\Result;
77
use Illuminate\Database\Query\Processors\Processor as BaseProcessor;
8+
use Kitar\Dynamodb\Helpers\Collection;
89

910
class Processor extends BaseProcessor
1011
{
@@ -56,6 +57,7 @@ public function processSingleItem(Result $awsResponse, $modelClass = null)
5657
$item = (new $modelClass)->newFromBuilder($response['Item']);
5758
unset($response['Item']);
5859
$item->setMeta($response ?? null);
60+
5961
return $item;
6062
}
6163

@@ -72,7 +74,7 @@ public function processMultipleItems(Result $awsResponse, $modelClass = null)
7274
return $response;
7375
}
7476

75-
$items = collect();
77+
$items = new Collection([]);
7678

7779
foreach ($response['Items'] as $item) {
7880
$item = (new $modelClass)->newFromBuilder($item);
@@ -81,10 +83,16 @@ public function processMultipleItems(Result $awsResponse, $modelClass = null)
8183

8284
unset($response['Items']);
8385

84-
return $items->map(function ($item) use ($response) {
86+
$items = $items->map(function ($item) use ($response) {
8587
$item->setMeta($response);
88+
8689
return $item;
8790
});
91+
92+
// set meta at the collection level
93+
$items->setMeta($response);
94+
95+
return $items;
8896
}
8997

9098
public function processBatchGetItems(Result $awsResponse, $modelClass = null)
@@ -108,6 +116,7 @@ public function processBatchGetItems(Result $awsResponse, $modelClass = null)
108116

109117
return $items->map(function ($item) use ($response) {
110118
$item->setMeta($response);
119+
111120
return $item;
112121
});
113122
}

0 commit comments

Comments
 (0)