feat(dump): purge expired dumps on a scheduled task

This commit is contained in:
2026-09-14 22:00:26 +02:00
parent 86069a51a3
commit a21b5aa73e
2 changed files with 56 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
<?php declare(strict_types=1);
namespace AeonDumpManager\ScheduledTask;
use Shopware\Core\Framework\MessageQueue\ScheduledTask\ScheduledTask;
class PurgeDumpsTask extends ScheduledTask
{
public static function getTaskName(): string
{
return 'aeon_dump_manager.purge_dumps_task';
}
public static function getDefaultInterval(): int
{
return 3600; // hourly
}
}
@@ -0,0 +1,38 @@
<?php declare(strict_types=1);
namespace AeonDumpManager\ScheduledTask;
use AeonDumpManager\Service\DumpJobStatusService;
use AeonDumpManager\Service\DumpService;
use Psr\Log\LoggerInterface;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
use Shopware\Core\Framework\MessageQueue\ScheduledTask\ScheduledTaskHandler;
use Shopware\Core\System\SystemConfig\SystemConfigService;
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
#[AsMessageHandler(handles: PurgeDumpsTask::class)]
class PurgeDumpsTaskHandler extends ScheduledTaskHandler
{
public function __construct(
EntityRepository $scheduledTaskRepository,
LoggerInterface $logger,
private readonly DumpService $dumpService,
private readonly DumpJobStatusService $jobStatus,
private readonly SystemConfigService $systemConfigService,
) {
parent::__construct($scheduledTaskRepository, $logger);
}
public function run(): void
{
$retantionDays = $this->systemConfigService->getInt('AeonDumpManager.config.retantionDays');
if ($retantionDays <= 0) {
return; // 0 means unlimited — nothing to purge
}
$threshold = (new \DateTimeImmutable())->modify("-{$retantionDays} days");
$this->dumpService->purgeOlderThan($threshold);
$this->jobStatus->purgeOlderThan($threshold);
}
}