diff --git a/src/Migration/Cache.php b/src/Migration/Cache.php index 0e3d1e0..9a1902d 100644 --- a/src/Migration/Cache.php +++ b/src/Migration/Cache.php @@ -88,9 +88,15 @@ public function resolveResourceCacheKey(Resource $resource): string public function add(Resource $resource): void { $key = $this->resolveResourceCacheKey($resource); + if ($resource->getName() == Resource::TYPE_ROW || $resource->getName() == Resource::TYPE_DOCUMENT) { $status = $resource->getStatus(); - $this->cache[$resource->getName()][$key] = $status; + + $counter = $this->cache[$resource->getName()][$status] ?? 0; + $counter = intval($counter) + 1; + + $this->cache[$resource->getName()][$status] = $counter . ''; // Transfer.php check is_string($resource) + return; } @@ -127,14 +133,17 @@ public function addAll(array $resources): void public function update(Resource $resource): void { $key = $this->resolveResourceCacheKey($resource); - // if rows then updating the status counter only + + /** + * if rows then updating the status counter only + */ if ($resource->getName() == Resource::TYPE_ROW || $resource->getName() == Resource::TYPE_DOCUMENT) { - if (!isset($this->cache[$resource->getName()][$key])) { + $status = $resource->getStatus(); + + if ($status != Resource::STATUS_SUCCESS) { $this->add($resource); - } else { - $status = $resource->getStatus(); - $this->cache[$resource->getName()][$key] = $status; } + return; } diff --git a/src/Migration/Transfer.php b/src/Migration/Transfer.php index 2bcceef..89d4dfd 100644 --- a/src/Migration/Transfer.php +++ b/src/Migration/Transfer.php @@ -172,13 +172,14 @@ public function getStatusCounters(): array } foreach ($this->cache->getAll() as $resourceType => $resources) { - foreach ($resources as $resource) { + foreach ($resources as $k => $resource) { if (($resourceType === Resource::TYPE_ROW || $resourceType === Resource::TYPE_DOCUMENT) && is_string($resource)) { - $rowStatus = $resource; - $status[$resourceType][$rowStatus]++; + $resource = intval($resource); + + $status[$resourceType][$k] = $resource; if ($status[$resourceType]['pending'] > 0) { - $status[$resourceType]['pending']--; + $status[$resourceType]['pending'] -= $resource; } continue;