fix(dump): correct DI wiring, config types, and runtime version query

This commit is contained in:
2026-09-14 23:01:16 +02:00
parent 59e48c8f21
commit 05e1d0eeb9
4 changed files with 40 additions and 32 deletions
+6 -1
View File
@@ -6,7 +6,8 @@ use AeonDumpManager\MessageQueue\Message\CreateDumpMessage;
use AeonDumpManager\Service\DumpJobStatusService;
use AeonDumpManager\Service\DumpLister;
use AeonDumpManager\Service\DumpService;
use Shopware\Core\Framework\Api\Route\ApiRouteScope;
use AeonDumpManager\Service\Exception\DumpNotFoundException;
use Shopware\Core\Framework\Routing\ApiRouteScope;
use Shopware\Core\PlatformRequest;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
@@ -67,7 +68,11 @@ class DumpController
)]
public function delete(string $filename): JsonResponse
{
try {
$this->dumpService->delete($filename);
} catch (DumpNotFoundException $exception) {
return new JsonResponse(['message' => $exception->getMessage()], Response::HTTP_NOT_FOUND);
}
return new JsonResponse(null, Response::HTTP_NO_CONTENT);
}
+2 -3
View File
@@ -6,12 +6,12 @@
<card>
<title>Minimal configuration</title>
<input-field type="number">
<input-field type="int">
<name>maxDumps</name>
<label>Maximum allowed dumps to exist</label>
<defaultValue>6</defaultValue>
</input-field>
<input-field type="number">
<input-field type="int">
<name>retantionDays</name>
<label>How many Days the dumps kept in the Storage. 0 Means unlimited</label>
<defaultValue>0</defaultValue>
@@ -19,7 +19,6 @@
<input-field type="text">
<name>dumpBinaryName</name>
<label>Name of the mysqldump/mariadb-dump binary to look up on PATH (e.g. if your distro renamed it). Leave empty to auto-detect.</label>
<defaultValue>""</defaultValue>
</input-field>
</card>
+27 -26
View File
@@ -5,81 +5,82 @@
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<!-- Services -->
<service id="Symfony\Component\Process\ExecutableFinder"/>
<service id="AeonDumpManager\Service\DumpFilenameParser"/>
<service id="aeon_dump_manager.dump_filename_parser" class="AeonDumpManager\Service\DumpFilenameParser"/>
<service id="AeonDumpManager\Service\DumpBinaryLocator">
<service id="aeon_dump_manager.dump_binary_locator" class="AeonDumpManager\Service\DumpBinaryLocator">
<argument type="service" id="Doctrine\DBAL\Connection"/>
<argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
<argument type="service" id="Symfony\Component\Process\ExecutableFinder"/>
</service>
<service id="AeonDumpManager\Service\DumpJobStatusService">
<service id="aeon_dump_manager.dump_job_status_service" class="AeonDumpManager\Service\DumpJobStatusService">
<argument type="service" id="Doctrine\DBAL\Connection"/>
</service>
<service id="AeonDumpManager\Service\DumpLister">
<service id="aeon_dump_manager.dump_lister" class="AeonDumpManager\Service\DumpLister">
<argument type="service" id="aeon_dump_manager.filesystem.private"/>
<argument type="service" id="AeonDumpManager\Service\DumpFilenameParser"/>
<argument type="service" id="aeon_dump_manager.dump_filename_parser"/>
</service>
<service id="AeonDumpManager\Service\DumpService">
<argument type="service" id="AeonDumpManager\Service\DumpLister"/>
<service id="aeon_dump_manager.dump_service" class="AeonDumpManager\Service\DumpService">
<argument type="service" id="aeon_dump_manager.dump_lister"/>
<argument type="service" id="aeon_dump_manager.filesystem.private"/>
<argument type="service" id="AeonDumpManager\Service\DumpBinaryLocator"/>
<argument type="service" id="aeon_dump_manager.dump_binary_locator"/>
<argument type="service" id="Doctrine\DBAL\Connection"/>
<argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
<argument type="service" id="AeonDumpManager\Service\DumpFilenameParser"/>
<argument type="service" id="aeon_dump_manager.dump_filename_parser"/>
</service>
<!-- Async create job -->
<service id="AeonDumpManager\MessageQueue\Handler\CreateDumpHandler">
<argument type="service" id="AeonDumpManager\Service\DumpService"/>
<argument type="service" id="AeonDumpManager\Service\DumpJobStatusService"/>
<service id="aeon_dump_manager.message_queue.create_dump_handler" class="AeonDumpManager\MessageQueue\Handler\CreateDumpHandler">
<argument type="service" id="aeon_dump_manager.dump_service"/>
<argument type="service" id="aeon_dump_manager.dump_job_status_service"/>
<tag name="messenger.message_handler"/>
</service>
<!-- Retention -->
<service id="AeonDumpManager\ScheduledTask\PurgeDumpsTask">
<service id="aeon_dump_manager.scheduled_task.purge_dumps_task" class="AeonDumpManager\ScheduledTask\PurgeDumpsTask">
<tag name="shopware.scheduled.task"/>
</service>
<service id="AeonDumpManager\ScheduledTask\PurgeDumpsTaskHandler">
<service id="aeon_dump_manager.scheduled_task.purge_dumps_task_handler" class="AeonDumpManager\ScheduledTask\PurgeDumpsTaskHandler">
<argument type="service" id="scheduled_task.repository"/>
<argument type="service" id="logger"/>
<argument type="service" id="AeonDumpManager\Service\DumpService"/>
<argument type="service" id="AeonDumpManager\Service\DumpJobStatusService"/>
<argument type="service" id="aeon_dump_manager.dump_service"/>
<argument type="service" id="aeon_dump_manager.dump_job_status_service"/>
<argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
<tag name="messenger.message_handler" handles="AeonDumpManager\ScheduledTask\PurgeDumpsTask"/>
</service>
<!-- Console commands -->
<service id="AeonDumpManager\Command\DumpListCommand">
<argument type="service" id="AeonDumpManager\Service\DumpLister"/>
<service id="aeon_dump_manager.command.dump_list" class="AeonDumpManager\Command\DumpListCommand">
<argument type="service" id="aeon_dump_manager.dump_lister"/>
<tag name="console.command"/>
</service>
<service id="AeonDumpManager\Command\DumpCreateCommand">
<argument type="service" id="AeonDumpManager\Service\DumpService"/>
<service id="aeon_dump_manager.command.dump_create" class="AeonDumpManager\Command\DumpCreateCommand">
<argument type="service" id="aeon_dump_manager.dump_service"/>
<tag name="console.command"/>
</service>
<service id="AeonDumpManager\Command\DumpRemoveCommand">
<argument type="service" id="AeonDumpManager\Service\DumpService"/>
<service id="aeon_dump_manager.command.dump_remove" class="AeonDumpManager\Command\DumpRemoveCommand">
<argument type="service" id="aeon_dump_manager.dump_service"/>
<tag name="console.command"/>
</service>
<!-- Admin API controller -->
<service id="AeonDumpManager\Controller\DumpController" public="true">
<argument type="service" id="AeonDumpManager\Service\DumpLister"/>
<argument type="service" id="AeonDumpManager\Service\DumpService"/>
<argument type="service" id="AeonDumpManager\Service\DumpJobStatusService"/>
<argument type="service" id="aeon_dump_manager.dump_lister"/>
<argument type="service" id="aeon_dump_manager.dump_service"/>
<argument type="service" id="aeon_dump_manager.dump_job_status_service"/>
<argument type="service" id="messenger.default_bus"/>
</service>
+4 -1
View File
@@ -40,6 +40,9 @@ class DumpBinaryLocator
private function isMariaDb(): bool
{
return MySqlVariant::isMariaDb($this->connection->getServerVersion());
// Connection::getServerVersion() is private in the DBAL version this
// repo pins against — SELECT VERSION() is the stable public way to get
// the same string.
return MySqlVariant::isMariaDb((string) $this->connection->fetchOne('SELECT VERSION()'));
}
}