Spaces:
No application file
No application file
File size: 1,779 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
<?php
declare(strict_types=1);
namespace Mautic\WebhookBundle\Command;
use Mautic\CoreBundle\Helper\CoreParametersHelper;
use Mautic\WebhookBundle\Model\WebhookModel;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
/**
* Retains a rolling number of log records.
*/
class DeleteWebhookLogsCommand extends Command
{
public const COMMAND_NAME = 'mautic:webhooks:delete_logs';
private \Mautic\WebhookBundle\Entity\LogRepository $logRepository;
public function __construct(
WebhookModel $webhookModel,
private CoreParametersHelper $coreParametersHelper
) {
$this->logRepository = $webhookModel->getLogRepository();
parent::__construct();
}
protected function configure(): void
{
$this->setName(static::COMMAND_NAME);
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$logMaxLimit = (int) $this->coreParametersHelper->get('webhook_log_max', WebhookModel::WEBHOOK_LOG_MAX);
$webHookIds = $this->logRepository->getWebhooksBasedOnLogLimit($logMaxLimit);
$webhookCount = count($webHookIds);
$output->writeln("<info>There is {$webhookCount} webhooks with logs more than defined limit.</info>");
foreach ($webHookIds as $webHookId) {
$deletedLogCount = $this->logRepository->removeLimitExceedLogs($webHookId, $logMaxLimit);
$output->writeln(sprintf('<info>%s logs deleted successfully for webhook id - %s</info>', $deletedLogCount, $webHookId));
}
return Command::SUCCESS;
}
protected static $defaultDescription = 'Retains a rolling number of log records.';
}
|