https://wwww.host.de/typo3/module/tools/TaskqueueTaskqueue?
token=53645615038777ecd70e161a5a6bae5b1f2fdb80
&tx_taskqueue_tools_taskqueuetaskqueue%5Baction%5D=deleteFinished
&tx_taskqueue_tools_taskqueuetaskqueue%5Bcontroller%5D=Task
/**
* action delete finished tasks
*
* @throws StopActionException
* @throws UnsupportedRequestTypeException
* @throws IllegalObjectTypeException
*/
public function deleteFinishedAction(): void
{
$tasks = $this->taskRepository->findFinished();
$this->addFlashMessageForDeletion($tasks);
foreach ($tasks as $task) {
$this->taskRepository->remove($task);
}
$this->redirect('list');
}
Maybe it would be better so create & call a taskRepository->deleteFinished() Method.
Something like this - untested:
/**
* delete all finished tasks
* @return int
*/
public function deleteFinished(): int
{
$queryBuilder = $this->connectionPool->getQueryBuilderForTable('tx_taskqueue_domain_model_task');
$affectedRows = $queryBuilder
->delete('tx_taskqueue_domain_model_task')
->where(
$queryBuilder->expr()->eq('status', TaskInterface::FINISHED)
)
->executeStatement();
return count($affectedRows);
}