annotate src/Generator/View/ViewGenerator.php @ 26:555bfaa500ac codex

Big update for view creation based on the column type.
author Luka Sitas <sitas.luka.97@gmail.com>
date Thu, 15 May 2025 21:50:38 -0400
parents 1a717c7b211f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }