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