/** * @return void */ protected function optionReset() { if ($this->getArg('reset') === true) { $this->logger->info('Reset the current position of migration to start from the beginning'); $this->progress->reset(); } }
/** * {@inheritdoc} */ protected function integrity() { $errors = false; $this->progress->start(count($this->structure[MapInterface::TYPE_SOURCE]) + count($this->structure[MapInterface::TYPE_DEST])); foreach ($this->structure as $resourceName => $documentList) { $resource = $resourceName == MapInterface::TYPE_SOURCE ? $this->source : $this->destination; foreach ($documentList as $documentName => $documentFields) { $this->progress->advance(); $document = $resource->getDocument($documentName); if ($document === false) { $message = sprintf('%s table does not exist: %s', ucfirst($resourceName), $documentName); $this->logger->error($message); $errors = true; continue; } $structure = array_keys($document->getStructure()->getFields()); if (!(empty(array_diff($structure, $documentFields)) && empty(array_diff($documentFields, $structure)))) { $message = sprintf('%s table structure does not meet expectation: %s', ucfirst($resourceName), $documentName); $this->logger->error($message); $errors = true; } } } $this->progress->finish(); $result = !$errors && !$this->processDuplicatesList(); if ($result) { $this->logger->info('Integrity check passed'); } return $result; }
/** * @param StageInterface $object * @param string $step * @param string $stage * @return bool */ protected function runStage($object, $step, $stage) { $this->logger->info('started', ['step' => $step, 'stage' => $stage, 'mode' => $this->mode]); if ($this->progress->isCompleted($object, $stage)) { return true; } try { $result = $object->perform(); } catch (\Migration\Exception $e) { $this->logger->error($e->getMessage()); return false; } if ($result && $this->canBeCompleted) { $this->progress->saveResult($object, $stage, $result); } return $result; }