/**
* Execute the command.
*
* @return void
*/
public function handle()
{
if (!in_array($this->argument('type'), [CommandData::$COMMAND_TYPE_API, CommandData::$COMMAND_TYPE_SCAFFOLD, CommandData::$COMMAND_TYPE_API_SCAFFOLD])) {
$this->error('invalid rollback type');
}
$this->commandData = new CommandData($this, $this->argument('type'));
$this->commandData->config->mName = $this->commandData->modelName = $this->argument('model');
$this->commandData->config->init($this->commandData, ['tableName', 'prefix']);
$migrationGenerator = new MigrationGenerator($this->commandData);
$migrationGenerator->rollback();
$modelGenerator = new ModelGenerator($this->commandData);
$modelGenerator->rollback();
$repositoryGenerator = new RepositoryGenerator($this->commandData);
$repositoryGenerator->rollback();
$requestGenerator = new APIRequestGenerator($this->commandData);
$requestGenerator->rollback();
$controllerGenerator = new APIControllerGenerator($this->commandData);
$controllerGenerator->rollback();
$routesGenerator = new APIRoutesGenerator($this->commandData);
$routesGenerator->rollback();
$requestGenerator = new RequestGenerator($this->commandData);
$requestGenerator->rollback();
$controllerGenerator = new ControllerGenerator($this->commandData);
$controllerGenerator->rollback();
$viewGenerator = new ViewGenerator($this->commandData);
$viewGenerator->rollback();
$routeGenerator = new RoutesGenerator($this->commandData);
$routeGenerator->rollback();
if ($this->commandData->getAddOn('tests')) {
$repositoryTestGenerator = new RepositoryTestGenerator($this->commandData);
$repositoryTestGenerator->rollback();
$testTraitGenerator = new TestTraitGenerator($this->commandData);
$testTraitGenerator->rollback();
$apiTestGenerator = new APITestGenerator($this->commandData);
$apiTestGenerator->rollback();
}
if ($this->commandData->config->getAddOn('menu.enabled')) {
$menuGenerator = new MenuGenerator($this->commandData);
$menuGenerator->rollback();
}
$this->info('Generating autoload files');
$this->composer->dumpOptimized();
}