39 lines
1.1 KiB
PHP
39 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Service\Cron;
|
|
|
|
use Doctrine\DBAL\Exception;
|
|
use Doctrine\ORM\EntityManagerInterface;
|
|
use Psr\Log\LoggerInterface;
|
|
|
|
class FlushLogsService
|
|
{
|
|
public function __construct(
|
|
private readonly EntityManagerInterface $entityManager,
|
|
private readonly LoggerInterface $logger,
|
|
) {
|
|
}
|
|
|
|
public function flush(): array
|
|
{
|
|
// Deletes all log entries older than 30 days
|
|
$dueDate = (new \DateTimeImmutable())->modify('-30 days');
|
|
|
|
try {
|
|
$result = $this
|
|
->entityManager
|
|
->getConnection()
|
|
->executeQuery('DELETE FROM log WHERE log.timestamp < ?', [$dueDate->format('Y-m-d H:i:s')]);
|
|
$message = 'Deleted '.$result->rowCount().' log entries';
|
|
$success = true;
|
|
$this->logger->info($message);
|
|
} catch (Exception $e) {
|
|
$message = 'Unable to delete log entries: '.$e->getMessage();
|
|
$success = false;
|
|
$this->logger->error($message);
|
|
}
|
|
|
|
return [$success, $message];
|
|
}
|
|
}
|