feat(dump): purge expired dumps on a scheduled task
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user