mirror of
https://github.com/FriendsOfTYPO3/tea.git
synced 2024-11-21 21:36:13 +01:00
parent
94487006b1
commit
b42f6ed08e
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;
|
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
|
||||||
|
|
||||||
|
use TTN\Tea\Command\CreateTestDataCommand;
|
||||||
|
|
||||||
return static function (ContainerConfigurator $containerConfigurator) {
|
return static function (ContainerConfigurator $containerConfigurator) {
|
||||||
$services = $containerConfigurator->services()
|
$services = $containerConfigurator->services()
|
||||||
->defaults()
|
->defaults()
|
||||||
|
@ -12,4 +14,12 @@ return static function (ContainerConfigurator $containerConfigurator) {
|
||||||
|
|
||||||
$services->load('TTN\\Tea\\', '../Classes/*')
|
$services->load('TTN\\Tea\\', '../Classes/*')
|
||||||
->exclude('../Classes/Domain/Model/*');
|
->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