Skip to content

Commit af3f273

Browse files
authored
Remove reference $fn in PopulateResult (#678)
* Remove reference $fn in PopulateResult * Split populateResponse in XML services * Add docblock * Better fix nullable map value * Fix phpstan
1 parent cf6e6d0 commit af3f273

12 files changed

+1027
-777
lines changed

src/Result/BatchGetItemOutput.php

Lines changed: 87 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -136,77 +136,102 @@ public function getUnprocessedKeys(): array
136136
protected function populateResult(Response $response): void
137137
{
138138
$data = $response->toArray();
139-
$fn = [];
140-
$fn['list-ItemList'] = static function (array $json) use (&$fn): array {
141-
$items = [];
142-
foreach ($json as $item) {
143-
$a = empty($item) ? [] : $fn['map-AttributeMap']($item);
144-
if (null !== $a) {
145-
$items[] = $a;
146-
}
147-
}
148139

149-
return $items;
150-
};
140+
$this->Responses = empty($data['Responses']) ? [] : $this->populateResultBatchGetResponseMap($data['Responses']);
141+
$this->UnprocessedKeys = empty($data['UnprocessedKeys']) ? [] : $this->populateResultBatchGetRequestMap($data['UnprocessedKeys']);
142+
$this->ConsumedCapacity = empty($data['ConsumedCapacity']) ? [] : $this->populateResultConsumedCapacityMultiple($data['ConsumedCapacity']);
143+
}
151144

152-
/** @return array<string, \AsyncAws\DynamoDb\ValueObject\AttributeValue> */
153-
$fn['map-AttributeMap'] = static function (array $json): array {
154-
$items = [];
155-
foreach ($json as $name => $value) {
156-
$items[(string) $name] = AttributeValue::create($value);
157-
}
145+
/**
146+
* @return array<string, AttributeValue>
147+
*/
148+
private function populateResultAttributeMap(array $json): array
149+
{
150+
$items = [];
151+
foreach ($json as $name => $value) {
152+
$items[(string) $name] = AttributeValue::create($value);
153+
}
158154

159-
return $items;
160-
};
155+
return $items;
156+
}
161157

162-
/** @return array<string, \AsyncAws\DynamoDb\ValueObject\KeysAndAttributes> */
163-
$fn['map-BatchGetRequestMap'] = static function (array $json): array {
164-
$items = [];
165-
foreach ($json as $name => $value) {
166-
$items[(string) $name] = KeysAndAttributes::create($value);
167-
}
158+
/**
159+
* @return array<string, KeysAndAttributes>
160+
*/
161+
private function populateResultBatchGetRequestMap(array $json): array
162+
{
163+
$items = [];
164+
foreach ($json as $name => $value) {
165+
$items[(string) $name] = KeysAndAttributes::create($value);
166+
}
168167

169-
return $items;
170-
};
171-
$fn['list-ConsumedCapacityMultiple'] = static function (array $json) use (&$fn): array {
172-
$items = [];
173-
foreach ($json as $item) {
174-
$items[] = new ConsumedCapacity([
175-
'TableName' => isset($item['TableName']) ? (string) $item['TableName'] : null,
176-
'CapacityUnits' => isset($item['CapacityUnits']) ? (float) $item['CapacityUnits'] : null,
177-
'ReadCapacityUnits' => isset($item['ReadCapacityUnits']) ? (float) $item['ReadCapacityUnits'] : null,
178-
'WriteCapacityUnits' => isset($item['WriteCapacityUnits']) ? (float) $item['WriteCapacityUnits'] : null,
179-
'Table' => empty($item['Table']) ? null : new Capacity([
180-
'ReadCapacityUnits' => isset($item['Table']['ReadCapacityUnits']) ? (float) $item['Table']['ReadCapacityUnits'] : null,
181-
'WriteCapacityUnits' => isset($item['Table']['WriteCapacityUnits']) ? (float) $item['Table']['WriteCapacityUnits'] : null,
182-
'CapacityUnits' => isset($item['Table']['CapacityUnits']) ? (float) $item['Table']['CapacityUnits'] : null,
183-
]),
184-
'LocalSecondaryIndexes' => empty($item['LocalSecondaryIndexes']) ? [] : $fn['map-SecondaryIndexesCapacityMap']($item['LocalSecondaryIndexes']),
185-
'GlobalSecondaryIndexes' => empty($item['GlobalSecondaryIndexes']) ? [] : $fn['map-SecondaryIndexesCapacityMap']($item['GlobalSecondaryIndexes']),
186-
]);
187-
}
168+
return $items;
169+
}
188170

189-
return $items;
190-
};
171+
/**
172+
* @return array<string, array>
173+
*/
174+
private function populateResultBatchGetResponseMap(array $json): array
175+
{
176+
$items = [];
177+
foreach ($json as $name => $value) {
178+
$items[(string) $name] = $this->populateResultItemList($value);
179+
}
191180

192-
/** @return array<string, \AsyncAws\DynamoDb\ValueObject\Capacity> */
193-
$fn['map-SecondaryIndexesCapacityMap'] = static function (array $json): array {
194-
$items = [];
195-
foreach ($json as $name => $value) {
196-
$items[(string) $name] = Capacity::create($value);
197-
}
181+
return $items;
182+
}
183+
184+
/**
185+
* @return ConsumedCapacity[]
186+
*/
187+
private function populateResultConsumedCapacityMultiple(array $json): array
188+
{
189+
$items = [];
190+
foreach ($json as $item) {
191+
$items[] = new ConsumedCapacity([
192+
'TableName' => isset($item['TableName']) ? (string) $item['TableName'] : null,
193+
'CapacityUnits' => isset($item['CapacityUnits']) ? (float) $item['CapacityUnits'] : null,
194+
'ReadCapacityUnits' => isset($item['ReadCapacityUnits']) ? (float) $item['ReadCapacityUnits'] : null,
195+
'WriteCapacityUnits' => isset($item['WriteCapacityUnits']) ? (float) $item['WriteCapacityUnits'] : null,
196+
'Table' => empty($item['Table']) ? null : new Capacity([
197+
'ReadCapacityUnits' => isset($item['Table']['ReadCapacityUnits']) ? (float) $item['Table']['ReadCapacityUnits'] : null,
198+
'WriteCapacityUnits' => isset($item['Table']['WriteCapacityUnits']) ? (float) $item['Table']['WriteCapacityUnits'] : null,
199+
'CapacityUnits' => isset($item['Table']['CapacityUnits']) ? (float) $item['Table']['CapacityUnits'] : null,
200+
]),
201+
'LocalSecondaryIndexes' => empty($item['LocalSecondaryIndexes']) ? [] : $this->populateResultSecondaryIndexesCapacityMap($item['LocalSecondaryIndexes']),
202+
'GlobalSecondaryIndexes' => empty($item['GlobalSecondaryIndexes']) ? [] : $this->populateResultSecondaryIndexesCapacityMap($item['GlobalSecondaryIndexes']),
203+
]);
204+
}
198205

199-
return $items;
200-
};
201-
$this->Responses = empty($data['Responses']) ? [] : (function (array $json) use (&$fn): array {
202-
$items = [];
203-
foreach ($json as $name => $value) {
204-
$items[(string) $name] = $fn['list-ItemList']($value);
206+
return $items;
207+
}
208+
209+
/**
210+
* @return array[]
211+
*/
212+
private function populateResultItemList(array $json): array
213+
{
214+
$items = [];
215+
foreach ($json as $item) {
216+
$a = empty($item) ? [] : $this->populateResultAttributeMap($item);
217+
if (null !== $a) {
218+
$items[] = $a;
205219
}
220+
}
221+
222+
return $items;
223+
}
224+
225+
/**
226+
* @return array<string, Capacity>
227+
*/
228+
private function populateResultSecondaryIndexesCapacityMap(array $json): array
229+
{
230+
$items = [];
231+
foreach ($json as $name => $value) {
232+
$items[(string) $name] = Capacity::create($value);
233+
}
206234

207-
return $items;
208-
})($data['Responses']);
209-
$this->UnprocessedKeys = empty($data['UnprocessedKeys']) ? [] : $fn['map-BatchGetRequestMap']($data['UnprocessedKeys']);
210-
$this->ConsumedCapacity = empty($data['ConsumedCapacity']) ? [] : $fn['list-ConsumedCapacityMultiple']($data['ConsumedCapacity']);
235+
return $items;
211236
}
212237
}

0 commit comments

Comments
 (0)