Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# NEXT

- #15568 - Switched to PHP Symfony service definitions
- #14598 - Introduced `MigrationConfiguration` service as a central place for internal configurations
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: it's not user facing so no need to mention it here, it's enough to put it in the upgrade file for developers to not confuse any normal users


# 16.1.1

Expand Down
1 change: 1 addition & 0 deletions CHANGELOG_de-DE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# NEXT

- #15568 - Umstellung auf PHP-Symfony-Service-Definitionen
- #14598 - `MigrationConfiguration` als zentrale Stelle für interne Konfigurationen eingeführt
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit, see above. Same applies to the line above this


# 16.1.1

Expand Down
15 changes: 15 additions & 0 deletions UPGRADE.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
# NEXT

- [BREAKING] - refactor!: centralize configuration into `MigrationConfiguration` service
- [BREAKING] Added required constructor parameter `SwagMigrationAssistant\Migration\MigrationConfiguration $migrationConfig` to `SwagMigrationAssistant\Migration\Media\Processor\HttpDownloadServiceBase`
- [BREAKING] Added required constructor parameter `SwagMigrationAssistant\Migration\MigrationConfiguration $migrationConfig` to `SwagMigrationAssistant\Profile\Shopware6\Media\HttpOrderDocumentGenerationService`
- [BREAKING] Removed constant `BUFFER_SIZE` from `SwagMigrationAssistant\Migration\Logging\LoggingService`, use `MigrationConfiguration::$MIGRATION_LOG_BUFFER_SIZE` instead
- [BREAKING] Removed constant `TRACE_ITEM_LIMIT` from `SwagMigrationAssistant\Migration\Logging\LoggingService`, use `MigrationConfiguration::$MIGRATION_LOG_EXCEPTION_TRACE_ITEM_LIMIT` instead
- [BREAKING] Removed constant `LOG_FETCH_LIMIT` from `SwagMigrationAssistant\Migration\History\HistoryService`, use `MigrationConfiguration::$MIGRATION_DEFAULT_FETCH_SIZE` instead
- [BREAKING] Removed constant `LOG_TIME_FORMAT` from `SwagMigrationAssistant\Migration\History\HistoryService`
- [BREAKING] Removed constant `BATCH_SIZE` from `SwagMigrationAssistant\Migration\MessageQueue\Handler\ResetChecksumHandler`, use `MigrationConfiguration::$MIGRATION_DEFAULT_BATCH_SIZE` instead
- [BREAKING] Removed constant `BATCH_SIZE` from `SwagMigrationAssistant\Migration\MessageQueue\Handler\Processor\CleanUpProcessor`, use `MigrationConfiguration::$MIGRATION_DEFAULT_BATCH_SIZE` instead
- [BREAKING] Removed constant `MEDIA_ERROR_THRESHOLD` from `SwagMigrationAssistant\Migration\MessageQueue\Handler\Processor\MediaProcessingProcessor`, use `MigrationConfiguration::$MIGRATION_DEFAULT_EXCEPTION_THRESHOLD` instead
- [BREAKING] Removed constant `MESSAGE_SIZE` from `SwagMigrationAssistant\Migration\MessageQueue\Handler\Processor\MediaProcessingProcessor`, use `MigrationConfiguration::$MIGRATION_MEDIA_PROCESSING_BATCH_SIZE` instead
- Added `SwagMigrationAssistant\Migration\MigrationConfiguration` service

# 16.0.0

- [BREAKING] [#124](https://github.com/shopware/SwagMigrationAssistant/pull/124) - refactor!: refactored log classes naming pattern
Expand Down
11 changes: 11 additions & 0 deletions src/DependencyInjection/migration.php
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
use SwagMigrationAssistant\Migration\MessageQueue\Handler\ThemeAssignHandler;
use SwagMigrationAssistant\Migration\MessageQueue\Handler\TruncateMigrationHandler;
use SwagMigrationAssistant\Migration\MessageQueue\OrderCountIndexer;
use SwagMigrationAssistant\Migration\MigrationConfiguration;
use SwagMigrationAssistant\Migration\MigrationContextFactory;
use SwagMigrationAssistant\Migration\Premapping\PremappingReaderRegistry;
use SwagMigrationAssistant\Migration\Profile\ProfileRegistry;
Expand All @@ -95,10 +96,13 @@
return static function (ContainerConfigurator $container): void {
$services = $container->services();

$services->set(MigrationConfiguration::class);

$services->set(LoggingService::class)
->args([
service('swag_migration_logging.repository'),
service('logger'),
service(MigrationConfiguration::class),
])
->tag('kernel.reset', ['method' => 'reset']);

Expand Down Expand Up @@ -275,6 +279,7 @@
->args([
service('swag_migration_logging.repository'),
service('swag_migration_run.repository'),
service(MigrationConfiguration::class),
]);

$services->set(MigrationDataFetcher::class)
Expand Down Expand Up @@ -322,6 +327,7 @@
service('swag_migration_media_file.repository'),
service(FileSaver::class),
service(LoggingService::class),
service(MigrationConfiguration::class),
]);

$services->set(PremappingController::class)
Expand Down Expand Up @@ -393,6 +399,7 @@
->args([
service(Connection::class),
service('messenger.default_bus'),
service(MigrationConfiguration::class),
])
->tag('messenger.message_handler');

Expand All @@ -405,6 +412,7 @@
service('swag_migration_run.repository'),
service(MigrationContextFactory::class),
service(MigrationProcessorRegistry::class),
service(MigrationConfiguration::class),
])
->tag('messenger.message_handler');

Expand All @@ -414,6 +422,7 @@
service('messenger.default_bus'),
service('swag_migration_run.repository'),
service(RunTransitionService::class),
service(MigrationConfiguration::class),
])
->tag('messenger.message_handler');

Expand Down Expand Up @@ -463,6 +472,7 @@
->args([
service(Connection::class),
service('messenger.default_bus'),
service(MigrationConfiguration::class),
])
->tag('shopware.migration.processor');

Expand All @@ -483,6 +493,7 @@
service(Connection::class),
service(MediaFileProcessorRegistry::class),
service(DataSetRegistry::class),
service(MigrationConfiguration::class),
])
->tag('shopware.migration.processor');

Expand Down
11 changes: 9 additions & 2 deletions src/DependencyInjection/shopware.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
use SwagMigrationAssistant\Migration\Media\MediaFileService;
use SwagMigrationAssistant\Migration\Media\Processor\BaseMediaService;
use SwagMigrationAssistant\Migration\Media\Processor\HttpDownloadServiceBase;
use SwagMigrationAssistant\Migration\MigrationConfiguration;
use SwagMigrationAssistant\Migration\Writer\AbstractWriter;
use SwagMigrationAssistant\Profile\Shopware\Converter\AttributeConverter;
use SwagMigrationAssistant\Profile\Shopware\Converter\CategoryAttributeConverter;
Expand Down Expand Up @@ -227,7 +228,10 @@

$services->set(HttpOrderDocumentDownloadService::class)
->parent(HttpDownloadServiceBase::class)
->args([service(ConnectionFactory::class)])
->args([
service(ConnectionFactory::class),
service(MigrationConfiguration::class),
])
->tag('shopware.migration.media_file_processor');

$services->set(LocalOrderDocumentProcessor::class)
Expand All @@ -252,7 +256,10 @@

$services->set(HttpEsdFileDownloadService::class)
->parent(HttpDownloadServiceBase::class)
->args([service(ConnectionFactory::class)])
->args([
service(ConnectionFactory::class),
service(MigrationConfiguration::class),
])
->tag('shopware.migration.media_file_processor');

$services->set(ShopwareConverter::class)
Expand Down
17 changes: 14 additions & 3 deletions src/DependencyInjection/shopware6.php
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@
use SwagMigrationAssistant\Migration\Media\MediaFileService;
use SwagMigrationAssistant\Migration\Media\Processor\BaseMediaService;
use SwagMigrationAssistant\Migration\Media\Processor\HttpDownloadServiceBase;
use SwagMigrationAssistant\Migration\MigrationConfiguration;
use SwagMigrationAssistant\Migration\Writer\AbstractWriter;
use SwagMigrationAssistant\Profile\Shopware6\Converter\CategoryAssociationConverter;
use SwagMigrationAssistant\Profile\Shopware6\Converter\CategoryCmsPageAssociationConverter;
Expand Down Expand Up @@ -277,7 +278,10 @@
$services = $container->services();

$services->set(ConnectionFactory::class)
->args([service('swag_migration_connection.repository')]);
->args([
service('swag_migration_connection.repository'),
service(MigrationConfiguration::class),
]);

$services->set(Shopware6ApiGateway::class)
->args([
Expand Down Expand Up @@ -1194,12 +1198,18 @@

$services->set(HttpOrderDocumentDownloadService::class)
->parent(HttpDownloadServiceBase::class)
->args([service(ConnectionFactory::class)])
->args([
service(ConnectionFactory::class),
service(MigrationConfiguration::class),
])
->tag('shopware.migration.media_file_processor');

$services->set(HttpProductDownloadService::class)
->parent(HttpDownloadServiceBase::class)
->args([service(ConnectionFactory::class)])
->args([
service(ConnectionFactory::class),
service(MigrationConfiguration::class),
])
->tag('shopware.migration.media_file_processor');

$services->set(HttpOrderDocumentGenerationService::class)
Expand All @@ -1212,6 +1222,7 @@
service(MediaService::class),
service(ConnectionFactory::class),
service(Connection::class),
service(MigrationConfiguration::class),
])
->tag('shopware.migration.media_file_processor');
};
2 changes: 2 additions & 0 deletions src/DependencyInjection/subscriber.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
namespace Symfony\Component\DependencyInjection\Loader\Configurator;

use SwagMigrationAssistant\Migration\Logging\LoggingService;
use SwagMigrationAssistant\Migration\MigrationConfiguration;
use SwagMigrationAssistant\Migration\Run\RunTransitionService;
use SwagMigrationAssistant\Migration\Subscriber\MediaDeletedSubscriber;
use SwagMigrationAssistant\Migration\Subscriber\MessageQueueSubscriber;
Expand All @@ -25,6 +26,7 @@
service('swag_migration_run.repository'),
service(LoggingService::class),
service(RunTransitionService::class),
service(MigrationConfiguration::class),
])
->tag('kernel.event_subscriber');
};
18 changes: 9 additions & 9 deletions src/Migration/History/HistoryService.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

namespace SwagMigrationAssistant\Migration\History;

use Shopware\Core\Defaults;
use Shopware\Core\Framework\Context;
use Shopware\Core\Framework\DataAbstractionLayer\EntityCollection;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
Expand All @@ -22,23 +23,22 @@
use SwagMigrationAssistant\Exception\MigrationException;
use SwagMigrationAssistant\Migration\Logging\SwagMigrationLoggingCollection;
use SwagMigrationAssistant\Migration\Logging\SwagMigrationLoggingEntity;
use SwagMigrationAssistant\Migration\MigrationConfiguration;
use SwagMigrationAssistant\Migration\Run\MigrationProgress;
use SwagMigrationAssistant\Migration\Run\SwagMigrationRunCollection;
use SwagMigrationAssistant\Migration\Run\SwagMigrationRunEntity;

#[Package('fundamentals@after-sales')]
class HistoryService implements HistoryServiceInterface
{
public const LOG_FETCH_LIMIT = 50;
public const LOG_TIME_FORMAT = 'Y-m-d H:i:s T';

/**
* @param EntityRepository<SwagMigrationRunCollection> $runRepo
* @param EntityRepository<SwagMigrationLoggingCollection> $loggingRepo
*/
public function __construct(
private readonly EntityRepository $loggingRepo,
private readonly EntityRepository $runRepo,
private readonly MigrationConfiguration $migrationConfig,
) {
}

Expand Down Expand Up @@ -118,7 +118,7 @@ public function downloadLogsOfRun(string $runUuid, Context $context): \Closure
$this->printLogEntry($logEntry);
}

$offset += self::LOG_FETCH_LIMIT;
$offset += $this->migrationConfig->migrationDefaultFetchSize;
}
};
}
Expand All @@ -131,7 +131,7 @@ private function printLogEntry(SwagMigrationLoggingEntity $logEntry): void
\printf('Code: %s%s', $logEntry->getCode(), \PHP_EOL);
\printf('Profile name: %s%s', $logEntry->getProfileName(), \PHP_EOL);
\printf('Gateway name: %s%s', $logEntry->getGatewayName(), \PHP_EOL);
\printf('Created at: %s%s', $logEntry->getCreatedAt()?->format(self::LOG_TIME_FORMAT) ?? '-', \PHP_EOL);
\printf('Created at: %s%s', $logEntry->getCreatedAt()?->format(Defaults::STORAGE_DATE_TIME_FORMAT) ?? '-', \PHP_EOL);

if ($logEntry->getEntityName()) {
\printf('Entity: %s%s', $logEntry->getEntityName(), \PHP_EOL);
Expand Down Expand Up @@ -217,7 +217,7 @@ private function getLogChunk(string $runUuid, int $offset, Context $context): En
$criteria->addFilter(new EqualsFilter('userFixable', 0));
$criteria->addSorting(new FieldSorting('autoIncrement', FieldSorting::ASCENDING));
$criteria->setOffset($offset);
$criteria->setLimit(self::LOG_FETCH_LIMIT);
$criteria->setLimit($this->migrationConfig->migrationDefaultFetchSize);

return $this->loggingRepo->search($criteria, $context)->getEntities();
}
Expand All @@ -238,8 +238,8 @@ private function getPrefixLogInformation(SwagMigrationRunEntity $run): string
$premapping = $connection->getPremapping();
}

$updatedAt = $run->getUpdatedAt()?->format(self::LOG_TIME_FORMAT) ?? '-';
$createdAt = $run->getCreatedAt()?->format(self::LOG_TIME_FORMAT) ?? '-';
$updatedAt = $run->getUpdatedAt()?->format(Defaults::STORAGE_DATE_TIME_FORMAT) ?? '-';
$createdAt = $run->getCreatedAt()?->format(Defaults::STORAGE_DATE_TIME_FORMAT) ?? '-';

return \sprintf(
'########## MIGRATION LOG ##########' . \PHP_EOL . \PHP_EOL
Expand All @@ -260,7 +260,7 @@ private function getPrefixLogInformation(SwagMigrationRunEntity $run): string
. 'Environment information (JSON):' . \PHP_EOL . '%s' . \PHP_EOL . \PHP_EOL
. 'Pre-mapping (JSON):' . \PHP_EOL . '%s' . \PHP_EOL . \PHP_EOL
. '########## LOG ENTRIES ##########' . \PHP_EOL,
\date(self::LOG_TIME_FORMAT),
\date(Defaults::STORAGE_DATE_TIME_FORMAT),
$run->getId(),
$run->getStepValue(),
$createdAt,
Expand Down
12 changes: 5 additions & 7 deletions src/Migration/Logging/LoggingService.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,12 @@
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
use Shopware\Core\Framework\Log\Package;
use SwagMigrationAssistant\Migration\Logging\Log\Builder\MigrationLogEntry;
use SwagMigrationAssistant\Migration\MigrationConfiguration;
use Symfony\Contracts\Service\ResetInterface;

#[Package('fundamentals@after-sales')]
class LoggingService implements LoggingServiceInterface, ResetInterface
{
final public const BUFFER_SIZE = 50;

final public const TRACE_ITEM_LIMIT = 10;

/**
* @var array<array-key, array<string, mixed>>
*/
Expand All @@ -34,6 +31,7 @@ class LoggingService implements LoggingServiceInterface, ResetInterface
public function __construct(
private readonly EntityRepository $loggingRepo,
private readonly LoggerInterface $logger,
private readonly MigrationConfiguration $migrationConfig,
) {
}

Expand Down Expand Up @@ -80,8 +78,8 @@ public function log(MigrationLogEntry $logEntry): self
{
$trace = $logEntry->getExceptionTrace();

if ($trace !== null && \count($trace) > self::TRACE_ITEM_LIMIT) {
$trace = \array_slice($trace, 0, self::TRACE_ITEM_LIMIT);
if ($trace !== null && \count($trace) > $this->migrationConfig->migrationLogExceptionTraceItemLimit) {
$trace = \array_slice($trace, 0, $this->migrationConfig->migrationLogExceptionTraceItemLimit);
}

$this->buffer[] = [
Expand All @@ -101,7 +99,7 @@ public function log(MigrationLogEntry $logEntry): self
'exceptionTrace' => $trace,
];

if (\count($this->buffer) >= self::BUFFER_SIZE) {
if (\count($this->buffer) >= $this->migrationConfig->migrationLogBufferSize) {
$this->flush();
}

Expand Down
5 changes: 3 additions & 2 deletions src/Migration/Media/Processor/HttpDownloadServiceBase.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
use SwagMigrationAssistant\Migration\Media\MediaFileProcessorInterface;
use SwagMigrationAssistant\Migration\Media\MediaProcessWorkloadStruct;
use SwagMigrationAssistant\Migration\Media\SwagMigrationMediaFileCollection;
use SwagMigrationAssistant\Migration\MessageQueue\Handler\Processor\MediaProcessingProcessor;
use SwagMigrationAssistant\Migration\MigrationConfiguration;
use SwagMigrationAssistant\Migration\MigrationContextInterface;

/**
Expand All @@ -49,6 +49,7 @@ public function __construct(
EntityRepository $mediaFileRepo,
private readonly FileSaver $fileSaver,
private readonly LoggingServiceInterface $loggingService,
protected readonly MigrationConfiguration $migrationConfig,
) {
parent::__construct($dbalConnection, $mediaFileRepo);
}
Expand Down Expand Up @@ -118,7 +119,7 @@ static function (MediaProcessWorkloadStruct $work) use ($uuid) {
$work->setAdditionalData($additionalData);
$work->setErrorCount($work->getErrorCount() + 1);

if ($work->getErrorCount() > MediaProcessingProcessor::MEDIA_ERROR_THRESHOLD) {
if ($work->getErrorCount() > $this->migrationConfig->migrationDefaultExceptionThreshold) {
$failureUuids[] = $uuid;
$work->setState(MediaProcessWorkloadStruct::ERROR_STATE);

Expand Down
Loading
Loading