mirror of
https://github.com/FriendsOfTYPO3/tea.git
synced 2024-11-22 04:56:12 +01:00
parent
5986b09e81
commit
90ace1025d
2 changed files with 89 additions and 0 deletions
79
Classes/Command/CreateTestDataCommand.php
Normal file
79
Classes/Command/CreateTestDataCommand.php
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace TTN\Tea\Command;
|
||||
|
||||
/*
|
||||
* Command to create test data for the tea extension.
|
||||
*/
|
||||
|
||||
use phpDocumentor\Reflection\Types\Integer;
|
||||
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 integer $pageId */
|
||||
$pageId = $input->getArgument('pageId') ?? 0;
|
||||
/** @var boolean $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;
|
||||
}
|
||||
}
|
|
@ -4,6 +4,8 @@ declare(strict_types=1);
|
|||
|
||||
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
|
||||
|
||||
use TTN\Tea\Command\CreateTestDataCommand;
|
||||
|
||||
return static function (ContainerConfigurator $containerConfigurator) {
|
||||
$services = $containerConfigurator->services()
|
||||
->defaults()
|
||||
|
@ -12,4 +14,12 @@ return static function (ContainerConfigurator $containerConfigurator) {
|
|||
|
||||
$services->load('TTN\\Tea\\', '../Classes/*')
|
||||
->exclude('../Classes/Domain/Model/*');
|
||||
|
||||
$services->set(CreateTestDataCommand::class)
|
||||
->tag('console.command', [
|
||||
'command' => 'tea:createtestdata',
|
||||
'description'=>'Create test data in existing sysfolder'
|
||||
]
|
||||
);
|
||||
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue