Skip to content

Commit 756cf8a

Browse files
authored
refactor!: centralize configurations (#158)
1 parent 8fed382 commit 756cf8a

38 files changed

Lines changed: 264 additions & 105 deletions

UPGRADE.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
1+
# NEXT
2+
3+
- [BREAKING] - refactor!: centralize configuration into `MigrationConfiguration` service
4+
- [BREAKING] Added required constructor parameter `SwagMigrationAssistant\Migration\MigrationConfiguration $migrationConfig` to `SwagMigrationAssistant\Migration\Media\Processor\HttpDownloadServiceBase`
5+
- [BREAKING] Added required constructor parameter `SwagMigrationAssistant\Migration\MigrationConfiguration $migrationConfig` to `SwagMigrationAssistant\Profile\Shopware6\Media\HttpOrderDocumentGenerationService`
6+
- [BREAKING] Removed constant `BUFFER_SIZE` from `SwagMigrationAssistant\Migration\Logging\LoggingService`, use `migrationLogBufferSize` from `MigrationConfiguration` instead
7+
- [BREAKING] Removed constant `TRACE_ITEM_LIMIT` from `SwagMigrationAssistant\Migration\Logging\LoggingService`, use `migrationLogExceptionTraceItemLimit` from `MigrationConfiguration` instead
8+
- [BREAKING] Removed constant `LOG_FETCH_LIMIT` from `SwagMigrationAssistant\Migration\History\HistoryService`, use `migrationDefaultFetchSize` from `MigrationConfiguration` instead
9+
- [BREAKING] Removed constant `LOG_TIME_FORMAT` from `SwagMigrationAssistant\Migration\History\HistoryService`
10+
- [BREAKING] Removed constant `BATCH_SIZE` from `SwagMigrationAssistant\Migration\MessageQueue\Handler\ResetChecksumHandler`, use `migrationDefaultBatchSize` from `MigrationConfiguration` instead
11+
- [BREAKING] Removed constant `BATCH_SIZE` from `SwagMigrationAssistant\Migration\MessageQueue\Handler\Processor\CleanUpProcessor`, use `migrationDefaultBatchSize` from `MigrationConfiguration` instead
12+
- [BREAKING] Removed constant `MEDIA_ERROR_THRESHOLD` from `SwagMigrationAssistant\Migration\MessageQueue\Handler\Processor\MediaProcessingProcessor`, use `migrationDefaultExceptionThreshold` from `MigrationConfiguration` instead
13+
- [BREAKING] Removed constant `MESSAGE_SIZE` from `SwagMigrationAssistant\Migration\MessageQueue\Handler\Processor\MediaProcessingProcessor`, use `migrationMediaProcessingBatchSize` from `MigrationConfiguration` instead
14+
- Added `SwagMigrationAssistant\Migration\MigrationConfiguration` service
15+
116
# 16.0.0
217

318
- [BREAKING] [#124](https://github.com/shopware/SwagMigrationAssistant/pull/124) - refactor!: refactored log classes naming pattern

src/DependencyInjection/migration.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@
7878
use SwagMigrationAssistant\Migration\MessageQueue\Handler\ThemeAssignHandler;
7979
use SwagMigrationAssistant\Migration\MessageQueue\Handler\TruncateMigrationHandler;
8080
use SwagMigrationAssistant\Migration\MessageQueue\OrderCountIndexer;
81+
use SwagMigrationAssistant\Migration\MigrationConfiguration;
8182
use SwagMigrationAssistant\Migration\MigrationContextFactory;
8283
use SwagMigrationAssistant\Migration\Premapping\PremappingReaderRegistry;
8384
use SwagMigrationAssistant\Migration\Profile\ProfileRegistry;
@@ -95,10 +96,13 @@
9596
return static function (ContainerConfigurator $container): void {
9697
$services = $container->services();
9798

99+
$services->set(MigrationConfiguration::class);
100+
98101
$services->set(LoggingService::class)
99102
->args([
100103
service('swag_migration_logging.repository'),
101104
service('logger'),
105+
service(MigrationConfiguration::class),
102106
])
103107
->tag('kernel.reset', ['method' => 'reset']);
104108

@@ -275,6 +279,7 @@
275279
->args([
276280
service('swag_migration_logging.repository'),
277281
service('swag_migration_run.repository'),
282+
service(MigrationConfiguration::class),
278283
]);
279284

280285
$services->set(MigrationDataFetcher::class)
@@ -322,6 +327,7 @@
322327
service('swag_migration_media_file.repository'),
323328
service(FileSaver::class),
324329
service(LoggingService::class),
330+
service(MigrationConfiguration::class),
325331
]);
326332

327333
$services->set(PremappingController::class)
@@ -393,6 +399,7 @@
393399
->args([
394400
service(Connection::class),
395401
service('messenger.default_bus'),
402+
service(MigrationConfiguration::class),
396403
])
397404
->tag('messenger.message_handler');
398405

@@ -405,6 +412,7 @@
405412
service('swag_migration_run.repository'),
406413
service(MigrationContextFactory::class),
407414
service(MigrationProcessorRegistry::class),
415+
service(MigrationConfiguration::class),
408416
])
409417
->tag('messenger.message_handler');
410418

@@ -414,6 +422,7 @@
414422
service('messenger.default_bus'),
415423
service('swag_migration_run.repository'),
416424
service(RunTransitionService::class),
425+
service(MigrationConfiguration::class),
417426
])
418427
->tag('messenger.message_handler');
419428

@@ -463,6 +472,7 @@
463472
->args([
464473
service(Connection::class),
465474
service('messenger.default_bus'),
475+
service(MigrationConfiguration::class),
466476
])
467477
->tag('shopware.migration.processor');
468478

@@ -483,6 +493,7 @@
483493
service(Connection::class),
484494
service(MediaFileProcessorRegistry::class),
485495
service(DataSetRegistry::class),
496+
service(MigrationConfiguration::class),
486497
])
487498
->tag('shopware.migration.processor');
488499

src/DependencyInjection/shopware.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
use SwagMigrationAssistant\Migration\Media\MediaFileService;
3636
use SwagMigrationAssistant\Migration\Media\Processor\BaseMediaService;
3737
use SwagMigrationAssistant\Migration\Media\Processor\HttpDownloadServiceBase;
38+
use SwagMigrationAssistant\Migration\MigrationConfiguration;
3839
use SwagMigrationAssistant\Migration\Writer\AbstractWriter;
3940
use SwagMigrationAssistant\Profile\Shopware\Converter\AttributeConverter;
4041
use SwagMigrationAssistant\Profile\Shopware\Converter\CategoryAttributeConverter;
@@ -227,7 +228,10 @@
227228

228229
$services->set(HttpOrderDocumentDownloadService::class)
229230
->parent(HttpDownloadServiceBase::class)
230-
->args([service(ConnectionFactory::class)])
231+
->args([
232+
service(ConnectionFactory::class),
233+
service(MigrationConfiguration::class),
234+
])
231235
->tag('shopware.migration.media_file_processor');
232236

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

253257
$services->set(HttpEsdFileDownloadService::class)
254258
->parent(HttpDownloadServiceBase::class)
255-
->args([service(ConnectionFactory::class)])
259+
->args([
260+
service(ConnectionFactory::class),
261+
service(MigrationConfiguration::class),
262+
])
256263
->tag('shopware.migration.media_file_processor');
257264

258265
$services->set(ShopwareConverter::class)

src/DependencyInjection/shopware6.php

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
use SwagMigrationAssistant\Migration\Media\MediaFileService;
6868
use SwagMigrationAssistant\Migration\Media\Processor\BaseMediaService;
6969
use SwagMigrationAssistant\Migration\Media\Processor\HttpDownloadServiceBase;
70+
use SwagMigrationAssistant\Migration\MigrationConfiguration;
7071
use SwagMigrationAssistant\Migration\Writer\AbstractWriter;
7172
use SwagMigrationAssistant\Profile\Shopware6\Converter\CategoryAssociationConverter;
7273
use SwagMigrationAssistant\Profile\Shopware6\Converter\CategoryCmsPageAssociationConverter;
@@ -277,7 +278,10 @@
277278
$services = $container->services();
278279

279280
$services->set(ConnectionFactory::class)
280-
->args([service('swag_migration_connection.repository')]);
281+
->args([
282+
service('swag_migration_connection.repository'),
283+
service(MigrationConfiguration::class),
284+
]);
281285

282286
$services->set(Shopware6ApiGateway::class)
283287
->args([
@@ -1194,12 +1198,18 @@
11941198

11951199
$services->set(HttpOrderDocumentDownloadService::class)
11961200
->parent(HttpDownloadServiceBase::class)
1197-
->args([service(ConnectionFactory::class)])
1201+
->args([
1202+
service(ConnectionFactory::class),
1203+
service(MigrationConfiguration::class),
1204+
])
11981205
->tag('shopware.migration.media_file_processor');
11991206

12001207
$services->set(HttpProductDownloadService::class)
12011208
->parent(HttpDownloadServiceBase::class)
1202-
->args([service(ConnectionFactory::class)])
1209+
->args([
1210+
service(ConnectionFactory::class),
1211+
service(MigrationConfiguration::class),
1212+
])
12031213
->tag('shopware.migration.media_file_processor');
12041214

12051215
$services->set(HttpOrderDocumentGenerationService::class)
@@ -1212,6 +1222,7 @@
12121222
service(MediaService::class),
12131223
service(ConnectionFactory::class),
12141224
service(Connection::class),
1225+
service(MigrationConfiguration::class),
12151226
])
12161227
->tag('shopware.migration.media_file_processor');
12171228
};

src/DependencyInjection/subscriber.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
99

1010
use SwagMigrationAssistant\Migration\Logging\LoggingService;
11+
use SwagMigrationAssistant\Migration\MigrationConfiguration;
1112
use SwagMigrationAssistant\Migration\Run\RunTransitionService;
1213
use SwagMigrationAssistant\Migration\Subscriber\MediaDeletedSubscriber;
1314
use SwagMigrationAssistant\Migration\Subscriber\MessageQueueSubscriber;
@@ -25,6 +26,7 @@
2526
service('swag_migration_run.repository'),
2627
service(LoggingService::class),
2728
service(RunTransitionService::class),
29+
service(MigrationConfiguration::class),
2830
])
2931
->tag('kernel.event_subscriber');
3032
};

src/Migration/History/HistoryService.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
namespace SwagMigrationAssistant\Migration\History;
99

10+
use Shopware\Core\Defaults;
1011
use Shopware\Core\Framework\Context;
1112
use Shopware\Core\Framework\DataAbstractionLayer\EntityCollection;
1213
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
@@ -22,23 +23,22 @@
2223
use SwagMigrationAssistant\Exception\MigrationException;
2324
use SwagMigrationAssistant\Migration\Logging\SwagMigrationLoggingCollection;
2425
use SwagMigrationAssistant\Migration\Logging\SwagMigrationLoggingEntity;
26+
use SwagMigrationAssistant\Migration\MigrationConfiguration;
2527
use SwagMigrationAssistant\Migration\Run\MigrationProgress;
2628
use SwagMigrationAssistant\Migration\Run\SwagMigrationRunCollection;
2729
use SwagMigrationAssistant\Migration\Run\SwagMigrationRunEntity;
2830

2931
#[Package('fundamentals@after-sales')]
3032
class HistoryService implements HistoryServiceInterface
3133
{
32-
public const LOG_FETCH_LIMIT = 50;
33-
public const LOG_TIME_FORMAT = 'Y-m-d H:i:s T';
34-
3534
/**
3635
* @param EntityRepository<SwagMigrationRunCollection> $runRepo
3736
* @param EntityRepository<SwagMigrationLoggingCollection> $loggingRepo
3837
*/
3938
public function __construct(
4039
private readonly EntityRepository $loggingRepo,
4140
private readonly EntityRepository $runRepo,
41+
private readonly MigrationConfiguration $migrationConfig,
4242
) {
4343
}
4444

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

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

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

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

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

244244
return \sprintf(
245245
'########## MIGRATION LOG ##########' . \PHP_EOL . \PHP_EOL
@@ -260,7 +260,7 @@ private function getPrefixLogInformation(SwagMigrationRunEntity $run): string
260260
. 'Environment information (JSON):' . \PHP_EOL . '%s' . \PHP_EOL . \PHP_EOL
261261
. 'Pre-mapping (JSON):' . \PHP_EOL . '%s' . \PHP_EOL . \PHP_EOL
262262
. '########## LOG ENTRIES ##########' . \PHP_EOL,
263-
\date(self::LOG_TIME_FORMAT),
263+
\date(Defaults::STORAGE_DATE_TIME_FORMAT),
264264
$run->getId(),
265265
$run->getStepValue(),
266266
$createdAt,

src/Migration/Logging/LoggingService.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,12 @@
1212
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
1313
use Shopware\Core\Framework\Log\Package;
1414
use SwagMigrationAssistant\Migration\Logging\Log\Builder\MigrationLogEntry;
15+
use SwagMigrationAssistant\Migration\MigrationConfiguration;
1516
use Symfony\Contracts\Service\ResetInterface;
1617

1718
#[Package('fundamentals@after-sales')]
1819
class LoggingService implements LoggingServiceInterface, ResetInterface
1920
{
20-
final public const BUFFER_SIZE = 50;
21-
22-
final public const TRACE_ITEM_LIMIT = 10;
23-
2421
/**
2522
* @var array<array-key, array<string, mixed>>
2623
*/
@@ -34,6 +31,7 @@ class LoggingService implements LoggingServiceInterface, ResetInterface
3431
public function __construct(
3532
private readonly EntityRepository $loggingRepo,
3633
private readonly LoggerInterface $logger,
34+
private readonly MigrationConfiguration $migrationConfig,
3735
) {
3836
}
3937

@@ -80,8 +78,8 @@ public function log(MigrationLogEntry $logEntry): self
8078
{
8179
$trace = $logEntry->getExceptionTrace();
8280

83-
if ($trace !== null && \count($trace) > self::TRACE_ITEM_LIMIT) {
84-
$trace = \array_slice($trace, 0, self::TRACE_ITEM_LIMIT);
81+
if ($trace !== null && \count($trace) > $this->migrationConfig->migrationLogExceptionTraceItemLimit) {
82+
$trace = \array_slice($trace, 0, $this->migrationConfig->migrationLogExceptionTraceItemLimit);
8583
}
8684

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

104-
if (\count($this->buffer) >= self::BUFFER_SIZE) {
102+
if (\count($this->buffer) >= $this->migrationConfig->migrationLogBufferSize) {
105103
$this->flush();
106104
}
107105

src/Migration/Media/Processor/HttpDownloadServiceBase.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
use SwagMigrationAssistant\Migration\Media\MediaFileProcessorInterface;
3333
use SwagMigrationAssistant\Migration\Media\MediaProcessWorkloadStruct;
3434
use SwagMigrationAssistant\Migration\Media\SwagMigrationMediaFileCollection;
35-
use SwagMigrationAssistant\Migration\MessageQueue\Handler\Processor\MediaProcessingProcessor;
35+
use SwagMigrationAssistant\Migration\MigrationConfiguration;
3636
use SwagMigrationAssistant\Migration\MigrationContextInterface;
3737

3838
/**
@@ -49,6 +49,7 @@ public function __construct(
4949
EntityRepository $mediaFileRepo,
5050
private readonly FileSaver $fileSaver,
5151
private readonly LoggingServiceInterface $loggingService,
52+
protected readonly MigrationConfiguration $migrationConfig,
5253
) {
5354
parent::__construct($dbalConnection, $mediaFileRepo);
5455
}
@@ -118,7 +119,7 @@ static function (MediaProcessWorkloadStruct $work) use ($uuid) {
118119
$work->setAdditionalData($additionalData);
119120
$work->setErrorCount($work->getErrorCount() + 1);
120121

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

src/Migration/MessageQueue/Handler/MigrationProcessHandler.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use Shopware\Core\Framework\Log\Package;
1414
use SwagMigrationAssistant\Exception\MigrationException;
1515
use SwagMigrationAssistant\Migration\MessageQueue\Message\MigrationProcessMessage;
16+
use SwagMigrationAssistant\Migration\MigrationConfiguration;
1617
use SwagMigrationAssistant\Migration\MigrationContextFactoryInterface;
1718
use SwagMigrationAssistant\Migration\Run\SwagMigrationRunCollection;
1819
use SwagMigrationAssistant\Migration\Run\SwagMigrationRunEntity;
@@ -25,15 +26,14 @@
2526
*/
2627
final class MigrationProcessHandler
2728
{
28-
private int $batchSize = 100;
29-
3029
/**
3130
* @param EntityRepository<SwagMigrationRunCollection> $migrationRunRepo
3231
*/
3332
public function __construct(
3433
private readonly EntityRepository $migrationRunRepo,
3534
private readonly MigrationContextFactoryInterface $migrationContextFactory,
3635
private readonly MigrationProcessorRegistry $processorRegistry,
36+
private readonly MigrationConfiguration $migrationConfig,
3737
) {
3838
}
3939

@@ -47,7 +47,12 @@ public function __invoke(MigrationProcessMessage $message): void
4747
throw MigrationException::noRunProgressFound($run->getId());
4848
}
4949

50-
$migrationContext = $this->migrationContextFactory->create($run, $progress->getCurrentEntityProgress(), $this->batchSize, $progress->getCurrentEntity());
50+
$migrationContext = $this->migrationContextFactory->create(
51+
$run,
52+
$progress->getCurrentEntityProgress(),
53+
$this->migrationConfig->migrationDefaultBatchSize,
54+
$progress->getCurrentEntity()
55+
);
5156

5257
if ($migrationContext === null) {
5358
throw MigrationException::migrationContextNotCreated();

0 commit comments

Comments
 (0)