fix(dump): correct DI wiring, config types, and runtime version query
This commit is contained in:
@@ -6,7 +6,8 @@ use AeonDumpManager\MessageQueue\Message\CreateDumpMessage;
|
|||||||
use AeonDumpManager\Service\DumpJobStatusService;
|
use AeonDumpManager\Service\DumpJobStatusService;
|
||||||
use AeonDumpManager\Service\DumpLister;
|
use AeonDumpManager\Service\DumpLister;
|
||||||
use AeonDumpManager\Service\DumpService;
|
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 Shopware\Core\PlatformRequest;
|
||||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
@@ -67,7 +68,11 @@ class DumpController
|
|||||||
)]
|
)]
|
||||||
public function delete(string $filename): JsonResponse
|
public function delete(string $filename): JsonResponse
|
||||||
{
|
{
|
||||||
|
try {
|
||||||
$this->dumpService->delete($filename);
|
$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);
|
return new JsonResponse(null, Response::HTTP_NO_CONTENT);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,12 +6,12 @@
|
|||||||
<card>
|
<card>
|
||||||
<title>Minimal configuration</title>
|
<title>Minimal configuration</title>
|
||||||
|
|
||||||
<input-field type="number">
|
<input-field type="int">
|
||||||
<name>maxDumps</name>
|
<name>maxDumps</name>
|
||||||
<label>Maximum allowed dumps to exist</label>
|
<label>Maximum allowed dumps to exist</label>
|
||||||
<defaultValue>6</defaultValue>
|
<defaultValue>6</defaultValue>
|
||||||
</input-field>
|
</input-field>
|
||||||
<input-field type="number">
|
<input-field type="int">
|
||||||
<name>retantionDays</name>
|
<name>retantionDays</name>
|
||||||
<label>How many Days the dumps kept in the Storage. 0 Means unlimited</label>
|
<label>How many Days the dumps kept in the Storage. 0 Means unlimited</label>
|
||||||
<defaultValue>0</defaultValue>
|
<defaultValue>0</defaultValue>
|
||||||
@@ -19,7 +19,6 @@
|
|||||||
<input-field type="text">
|
<input-field type="text">
|
||||||
<name>dumpBinaryName</name>
|
<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>
|
<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>
|
</input-field>
|
||||||
</card>
|
</card>
|
||||||
|
|
||||||
|
|||||||
@@ -5,81 +5,82 @@
|
|||||||
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
|
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
|
||||||
|
|
||||||
<services>
|
<services>
|
||||||
|
|
||||||
<!-- Services -->
|
<!-- Services -->
|
||||||
|
|
||||||
<service id="Symfony\Component\Process\ExecutableFinder"/>
|
<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="Doctrine\DBAL\Connection"/>
|
||||||
<argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
|
<argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
|
||||||
<argument type="service" id="Symfony\Component\Process\ExecutableFinder"/>
|
<argument type="service" id="Symfony\Component\Process\ExecutableFinder"/>
|
||||||
</service>
|
</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"/>
|
<argument type="service" id="Doctrine\DBAL\Connection"/>
|
||||||
</service>
|
</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="aeon_dump_manager.filesystem.private"/>
|
||||||
<argument type="service" id="AeonDumpManager\Service\DumpFilenameParser"/>
|
<argument type="service" id="aeon_dump_manager.dump_filename_parser"/>
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
<service id="AeonDumpManager\Service\DumpService">
|
<service id="aeon_dump_manager.dump_service" class="AeonDumpManager\Service\DumpService">
|
||||||
<argument type="service" id="AeonDumpManager\Service\DumpLister"/>
|
<argument type="service" id="aeon_dump_manager.dump_lister"/>
|
||||||
<argument type="service" id="aeon_dump_manager.filesystem.private"/>
|
<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="Doctrine\DBAL\Connection"/>
|
||||||
<argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
|
<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>
|
</service>
|
||||||
|
|
||||||
<!-- Async create job -->
|
<!-- Async create job -->
|
||||||
|
|
||||||
<service id="AeonDumpManager\MessageQueue\Handler\CreateDumpHandler">
|
<service id="aeon_dump_manager.message_queue.create_dump_handler" class="AeonDumpManager\MessageQueue\Handler\CreateDumpHandler">
|
||||||
<argument type="service" id="AeonDumpManager\Service\DumpService"/>
|
<argument type="service" id="aeon_dump_manager.dump_service"/>
|
||||||
<argument type="service" id="AeonDumpManager\Service\DumpJobStatusService"/>
|
<argument type="service" id="aeon_dump_manager.dump_job_status_service"/>
|
||||||
|
<tag name="messenger.message_handler"/>
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
<!-- Retention -->
|
<!-- 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"/>
|
<tag name="shopware.scheduled.task"/>
|
||||||
</service>
|
</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="scheduled_task.repository"/>
|
||||||
<argument type="service" id="logger"/>
|
<argument type="service" id="logger"/>
|
||||||
<argument type="service" id="AeonDumpManager\Service\DumpService"/>
|
<argument type="service" id="aeon_dump_manager.dump_service"/>
|
||||||
<argument type="service" id="AeonDumpManager\Service\DumpJobStatusService"/>
|
<argument type="service" id="aeon_dump_manager.dump_job_status_service"/>
|
||||||
<argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
|
<argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
|
||||||
|
<tag name="messenger.message_handler" handles="AeonDumpManager\ScheduledTask\PurgeDumpsTask"/>
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
<!-- Console commands -->
|
<!-- Console commands -->
|
||||||
|
|
||||||
<service id="AeonDumpManager\Command\DumpListCommand">
|
<service id="aeon_dump_manager.command.dump_list" class="AeonDumpManager\Command\DumpListCommand">
|
||||||
<argument type="service" id="AeonDumpManager\Service\DumpLister"/>
|
<argument type="service" id="aeon_dump_manager.dump_lister"/>
|
||||||
<tag name="console.command"/>
|
<tag name="console.command"/>
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
<service id="AeonDumpManager\Command\DumpCreateCommand">
|
<service id="aeon_dump_manager.command.dump_create" class="AeonDumpManager\Command\DumpCreateCommand">
|
||||||
<argument type="service" id="AeonDumpManager\Service\DumpService"/>
|
<argument type="service" id="aeon_dump_manager.dump_service"/>
|
||||||
<tag name="console.command"/>
|
<tag name="console.command"/>
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
<service id="AeonDumpManager\Command\DumpRemoveCommand">
|
<service id="aeon_dump_manager.command.dump_remove" class="AeonDumpManager\Command\DumpRemoveCommand">
|
||||||
<argument type="service" id="AeonDumpManager\Service\DumpService"/>
|
<argument type="service" id="aeon_dump_manager.dump_service"/>
|
||||||
<tag name="console.command"/>
|
<tag name="console.command"/>
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
<!-- Admin API controller -->
|
<!-- Admin API controller -->
|
||||||
|
|
||||||
<service id="AeonDumpManager\Controller\DumpController" public="true">
|
<service id="AeonDumpManager\Controller\DumpController" public="true">
|
||||||
<argument type="service" id="AeonDumpManager\Service\DumpLister"/>
|
<argument type="service" id="aeon_dump_manager.dump_lister"/>
|
||||||
<argument type="service" id="AeonDumpManager\Service\DumpService"/>
|
<argument type="service" id="aeon_dump_manager.dump_service"/>
|
||||||
<argument type="service" id="AeonDumpManager\Service\DumpJobStatusService"/>
|
<argument type="service" id="aeon_dump_manager.dump_job_status_service"/>
|
||||||
<argument type="service" id="messenger.default_bus"/>
|
<argument type="service" id="messenger.default_bus"/>
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,9 @@ class DumpBinaryLocator
|
|||||||
|
|
||||||
private function isMariaDb(): bool
|
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()'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user