Mercurial > packages > magicforger
annotate src/Generator/View/ViewGenerator.php @ 40:2cf26b593f4a ls_dev_2025_09 tip
better support for different column types
| author | Luka Sitas <sitas.luka.97@gmail.com> |
|---|---|
| date | Thu, 16 Oct 2025 10:54:04 -0400 |
| parents | 555bfaa500ac |
| children |
| rev | line source |
|---|---|
|
25
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
1 <?php |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
2 |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
3 namespace Wizard\MagicForger\Generator\View; |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
4 |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
5 use Symfony\Component\Console\Attribute\AsCommand; |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
6 use Symfony\Component\Console\Input\InputInterface; |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
7 use Symfony\Component\Console\Input\InputOption; |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
8 use Symfony\Component\Console\Output\OutputInterface; |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
9 use Wizard\MagicForger\Generator\BaseGenerator; |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
10 |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
11 #[AsCommand(name: 'mf:view')] |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
12 class ViewGenerator extends BaseGenerator |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
13 { |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
14 /** |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
15 * The name and signature of the console command. |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
16 * |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
17 * @var string |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
18 */ |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
19 protected $name = 'mf:view'; |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
20 |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
21 /** |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
22 * The console command description. |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
23 * |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
24 * @var string |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
25 */ |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
26 protected $description = 'Generates the View File for a table.'; |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
27 |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
28 /** |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
29 * The type of class being generated. |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
30 * |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
31 * @var string |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
32 */ |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
33 protected $type = 'View'; |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
34 |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
35 /** |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
36 * Execute the console command. |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
37 */ |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
38 public function handle() |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
39 { |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
40 // First we need to ensure that the table exists, then we can |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
41 if (! $this->tableExists($this->getTableInput())) { |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
42 $this->components->error('The table: "'.$this->getTableInput().'" does not exist in the database.'); |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
43 |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
44 return false; |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
45 } |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
46 |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
47 if ($this->option('all')) { |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
48 $this->input->setOption('index_view', true); |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
49 $this->input->setOption('create_edit_view', true); |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
50 $this->input->setOption('show_view', true); |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
51 } |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
52 |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
53 if ($this->option('index_view')) { |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
54 $this->createIndexView(); |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
55 } |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
56 |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
57 if ($this->option('create_edit_view')) { |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
58 $this->createCreateEditView(); |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
59 } |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
60 |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
61 if ($this->option('show_view')) { |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
62 $this->createShowView(); |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
63 } |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
64 } |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
65 |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
66 /** |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
67 * Get the console command options. |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
68 */ |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
69 protected function getOptions(): array |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
70 { |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
71 return array_merge(parent::getOptions(), [ |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
72 ['all', 'a', InputOption::VALUE_NONE, 'Generate all views for the table.'], |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
73 ['index_view', 'i', InputOption::VALUE_NONE, 'Generate index view for the table.'], |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
74 ['create_edit_view', 'c', InputOption::VALUE_NONE, 'Generate create_edit view for the table.'], |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
75 ['show_view', 's', InputOption::VALUE_NONE, 'Generate show view for the table.'], |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
76 ]); |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
77 } |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
78 |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
79 /** |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
80 * Interact further with the user if they were prompted for missing arguments. |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
81 */ |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
82 protected function afterPromptingForMissingArguments(InputInterface $input, OutputInterface $output): void {} |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
83 |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
84 /** |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
85 * Get the stub file for the generator. |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
86 * |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
87 * @return string |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
88 */ |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
89 protected function getStub() {} |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
90 |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
91 protected function createIndexView() |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
92 { |
|
26
555bfaa500ac
Big update for view creation based on the column type.
Luka Sitas <sitas.luka.97@gmail.com>
parents:
25
diff
changeset
|
93 $this->call('mf:index_view', ['table' => $this->getTableInput(), '--fresh' => $this->option('fresh')]); |
|
25
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
94 } |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
95 |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
96 protected function createCreateEditView() |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
97 { |
|
26
555bfaa500ac
Big update for view creation based on the column type.
Luka Sitas <sitas.luka.97@gmail.com>
parents:
25
diff
changeset
|
98 $this->call('mf:create_edit_view', ['table' => $this->getTableInput(), '--fresh' => $this->option('fresh')]); |
|
25
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
99 } |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
100 |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
101 protected function createShowView() |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
102 { |
|
26
555bfaa500ac
Big update for view creation based on the column type.
Luka Sitas <sitas.luka.97@gmail.com>
parents:
25
diff
changeset
|
103 $this->call('mf:show_view', ['table' => $this->getTableInput(), '--fresh' => $this->option('fresh')]); |
|
25
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
104 } |
|
1a717c7b211f
added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents:
diff
changeset
|
105 } |
