mirror of https://github.com/FriendsOfTYPO3/tea.git synced 2024-11-22 19:36:12 +01:00
tea/Classes/Command/CreateTestDataCommand.php
2024-10-20 11:49:43 +02:00

79 lines
2.5 KiB
PHP

<?php
declare(strict_types=1);
namespace TTN\Tea\Command;
/*
* Command to create test data for the tea extension.
*/
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
final class CreateTestDataCommand extends Command
{
/** @phpstan-ignore-next-line */
protected array $teaData = [
[
'title' => 'Darjeeling',
'description' => 'I love that tea!',
'sys_language_uid' => 0,
],
[
'title' => 'Earl Grey',
'description' => 'A nice tea!',
'sys_language_uid' => 0,
],
];
protected function configure(): void
{
$this
->setHelp('Create test data for the tea extension in an already existing page (sysfolder).')
->addArgument(
'pageId',
InputArgument::REQUIRED,
'Existing sysfolder page id.'
)
->addOption(
'delete-data-before',
'd',
InputOption::VALUE_NONE,
'Delete all tea data in the defined pid before creating new data.'
);
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
/** @var int $pageId */
$pageId = $input->getArgument('pageId') ?? 0;
/** @var bool $deleteDataBefore */
$deleteDataBefore = $input->getOption('delete-data-before') ?? false;
$table = 'tx_tea_domain_model_tea';
$connectionForTable = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($table);
if ($deleteDataBefore) {
$query = $connectionForTable;
$query->delete($table, ['pid' => $pageId], [Connection::PARAM_INT]);
$output->writeln(sprintf('Existing data in page %s deleted.', $pageId));
}
$query = $connectionForTable;
foreach ($this->teaData as $item) {
$item = ['pid' => $pageId, ...$item];
$query->insert(
$table,
$item
);
}
$output->writeln(sprintf('Test data in page %s created.', $pageId));
return Command::SUCCESS;
}
}