You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
3.0 KiB
111 lines
3.0 KiB
<?php
|
|
|
|
namespace Luthfi\CrudGenerator;
|
|
|
|
class CrudApiMake extends GeneratorCommand
|
|
{
|
|
/**
|
|
* The name and signature of the console command.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $signature = 'make:crud-api {name} {--p|parent=} {--t|tests-only}';
|
|
|
|
/**
|
|
* The console command description.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $description = 'Create simple Laravel API CRUD files of given model name.';
|
|
|
|
/**
|
|
* Execute the console command.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function handle()
|
|
{
|
|
$this->getModelName();
|
|
|
|
if ($this->modelExists()) {
|
|
$this->error("{$this->modelNames['model_name']} model already exists.");
|
|
return;
|
|
}
|
|
|
|
// Warn if it has no default layout view based on
|
|
// simple-crud.default_layout_view config
|
|
if ($this->defaultLayoutNotExists()) {
|
|
$this->warn(config('simple-crud.default_layout_view').' view does not exists.');
|
|
}
|
|
|
|
if ($this->option('tests-only')) {
|
|
$this->generateTestFiles();
|
|
|
|
$this->info('Test files generated successfully!');
|
|
return;
|
|
}
|
|
|
|
$this->generateRoutes();
|
|
$this->generateModel();
|
|
$this->generateController();
|
|
$this->generateResources();
|
|
$this->generateTestFiles();
|
|
|
|
$this->info('CRUD files generated successfully!');
|
|
}
|
|
|
|
/**
|
|
* Generate test files
|
|
*
|
|
* @return void
|
|
*/
|
|
public function generateTestFiles()
|
|
{
|
|
app('Luthfi\CrudGenerator\Generators\ModelTestGenerator', ['command' => $this])->generate();
|
|
app('Luthfi\CrudGenerator\Generators\FeatureTestGenerator', ['command' => $this])->generate('simple');
|
|
app('Luthfi\CrudGenerator\Generators\ModelPolicyTestGenerator', ['command' => $this])->generate();
|
|
}
|
|
|
|
/**
|
|
* Generate Controller
|
|
*
|
|
* @return void
|
|
*/
|
|
public function generateController()
|
|
{
|
|
app('Luthfi\CrudGenerator\Generators\ControllerGenerator', ['command' => $this])->generate('api');
|
|
}
|
|
|
|
/**
|
|
* Generate Model
|
|
*
|
|
* @return void
|
|
*/
|
|
public function generateModel()
|
|
{
|
|
app('Luthfi\CrudGenerator\Generators\ModelGenerator', ['command' => $this])->generate();
|
|
app('Luthfi\CrudGenerator\Generators\MigrationGenerator', ['command' => $this])->generate();
|
|
app('Luthfi\CrudGenerator\Generators\ModelPolicyGenerator', ['command' => $this])->generate();
|
|
app('Luthfi\CrudGenerator\Generators\ModelFactoryGenerator', ['command' => $this])->generate();
|
|
}
|
|
|
|
/**
|
|
* Generate Route Route
|
|
*
|
|
* @return void
|
|
*/
|
|
public function generateRoutes()
|
|
{
|
|
app('Luthfi\CrudGenerator\Generators\WebRouteGenerator', ['command' => $this])->generate();
|
|
}
|
|
|
|
/**
|
|
* Generate Resources
|
|
*
|
|
* @return void
|
|
*/
|
|
public function generateResources()
|
|
{
|
|
app('Luthfi\CrudGenerator\Generators\LangFileGenerator', ['command' => $this])->generate();
|
|
}
|
|
}
|