annotate src/Generator/Generator.php @ 36:76584181267a ls_dev_2025_09

Got factories working in a basic way, not sure how complex tables will handle it though
author Luka Sitas <sitas.luka.97@gmail.com>
date Sat, 20 Sep 2025 17:14:29 -0400
parents 1a717c7b211f
children 116b36f5e73b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
1 <?php
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
2
19
19b7a8de0019 updating namespace from typo
Luka Sitas <sitas.luka.97@gmail.com>
parents: 13
diff changeset
3 namespace Wizard\MagicForger\Generator;
3
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
4
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
5 use Symfony\Component\Console\Attribute\AsCommand;
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
6 use Symfony\Component\Console\Input\InputInterface;
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
7 use Symfony\Component\Console\Input\InputOption;
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
8 use Symfony\Component\Console\Output\OutputInterface;
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
9
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
10 #[AsCommand(name: 'mf')]
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
11 class Generator extends BaseGenerator
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
12 {
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
13 /**
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
14 * The name and signature of the console command.
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
15 *
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
16 * @var string
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
17 */
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
18 protected $name = 'mf';
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
19
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
20 /**
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
21 * The console command description.
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
22 *
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
23 * @var string
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
24 */
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
25 protected $description = 'Generates any (or all) of the available files.';
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
26
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
27 /**
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
28 * Execute the console command.
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
29 */
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
30 public function handle()
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
31 {
23
827efbf4d73c Huge changes to the relationships for models and more complex
Luka Sitas <sitas.luka.97@gmail.com>
parents: 22
diff changeset
32
3
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
33 // First we need to ensure that the table exists, then we can
23
827efbf4d73c Huge changes to the relationships for models and more complex
Luka Sitas <sitas.luka.97@gmail.com>
parents: 22
diff changeset
34 if (! $this->tableExists($this->getTableInput())) {
3
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
35 $this->components->error('The table: "'.$this->getTableInput().'" does not exist in the database.');
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
36
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
37 return false;
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
38 }
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
39
7
769a17898cc0 Various changes to the generators and replacers - probably mostly just formatting
luka
parents: 5
diff changeset
40 /* $this->setCurrentTable($this->getTableInput()); */
769a17898cc0 Various changes to the generators and replacers - probably mostly just formatting
luka
parents: 5
diff changeset
41 /* dd($this->getCurrentTable()->getForeignKeys()); */
5
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
42
3
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
43 if ($this->option('all')) {
36
76584181267a Got factories working in a basic way, not sure how complex tables will handle it though
Luka Sitas <sitas.luka.97@gmail.com>
parents: 25
diff changeset
44 $this->input->setOption('factory', true);
3
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
45 /* $this->input->setOption('seed', true); */
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
46 /* $this->input->setOption('migration', true); */
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
47 $this->input->setOption('controller', true);
12
4bb4daa9e3f1 Working with the new FileModifier
luka
parents: 3
diff changeset
48 $this->input->setOption('model', true);
5
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
49 $this->input->setOption('request', true);
25
1a717c7b211f added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents: 23
diff changeset
50 $this->input->setOption('view', true);
5
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
51 $this->input->setOption('route', true);
3
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
52 }
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
53
36
76584181267a Got factories working in a basic way, not sure how complex tables will handle it though
Luka Sitas <sitas.luka.97@gmail.com>
parents: 25
diff changeset
54 if ($this->option('factory')) {
76584181267a Got factories working in a basic way, not sure how complex tables will handle it though
Luka Sitas <sitas.luka.97@gmail.com>
parents: 25
diff changeset
55 $this->createFactory();
76584181267a Got factories working in a basic way, not sure how complex tables will handle it though
Luka Sitas <sitas.luka.97@gmail.com>
parents: 25
diff changeset
56 }
3
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
57
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
58 /* if ($this->option('migration')) { */
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
59 /* $this->createMigration(); */
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
60 /* } */
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
61
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
62 /* if ($this->option('seed')) { */
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
63 /* $this->createSeeder(); */
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
64 /* } */
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
65
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
66 if ($this->option('controller')) {
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
67 $this->createController();
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
68 }
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
69
12
4bb4daa9e3f1 Working with the new FileModifier
luka
parents: 3
diff changeset
70 if ($this->option('model')) {
4bb4daa9e3f1 Working with the new FileModifier
luka
parents: 3
diff changeset
71 $this->createModel();
4bb4daa9e3f1 Working with the new FileModifier
luka
parents: 3
diff changeset
72 }
3
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
73
5
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
74 if ($this->option('request')) {
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
75 $this->createRequest();
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
76 }
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
77
25
1a717c7b211f added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents: 23
diff changeset
78 if ($this->option('view')) {
1a717c7b211f added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents: 23
diff changeset
79 $this->createView();
1a717c7b211f added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents: 23
diff changeset
80 }
1a717c7b211f added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents: 23
diff changeset
81
5
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
82 if ($this->option('route')) {
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
83 $this->createRoute();
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
84 }
3
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
85 }
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
86
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
87 /**
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
88 * Get the console command options.
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
89 */
22
ee8ef14e158d Now able to include through composer
Luka Sitas <sitas.luka.97@gmail.com>
parents: 19
diff changeset
90 protected function getOptions(): array
3
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
91 {
5
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
92 return array_merge(parent::getOptions(), [
3
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
93 ['all', 'a', InputOption::VALUE_NONE, 'Generate a migration, seeder, factory, policy, resource controller, and form request classes for the table.'],
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
94 ['controller', 'c', InputOption::VALUE_NONE, 'Generate a controller class for the table.'],
5
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
95 ['model', 'm', InputOption::VALUE_NONE, 'Generate a model class for the table.'],
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
96 ['request', 'r', InputOption::VALUE_NONE, 'Generate base request classes for the table.'],
25
1a717c7b211f added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents: 23
diff changeset
97 ['view', '', InputOption::VALUE_NONE, 'Generate base views for the table.'],
5
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
98 ['route', 'w', InputOption::VALUE_NONE, 'Generate base routes classes for the table.'],
36
76584181267a Got factories working in a basic way, not sure how complex tables will handle it though
Luka Sitas <sitas.luka.97@gmail.com>
parents: 25
diff changeset
99 ['factory', 'f', InputOption::VALUE_NONE, 'Generate base factory classes for the table.'],
5
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
100 ]);
3
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
101 }
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
102
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
103 /**
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
104 * Interact further with the user if they were prompted for missing arguments.
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
105 */
23
827efbf4d73c Huge changes to the relationships for models and more complex
Luka Sitas <sitas.luka.97@gmail.com>
parents: 22
diff changeset
106 protected function afterPromptingForMissingArguments(InputInterface $input, OutputInterface $output): void {}
3
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
107
23
827efbf4d73c Huge changes to the relationships for models and more complex
Luka Sitas <sitas.luka.97@gmail.com>
parents: 22
diff changeset
108 protected function getStub(): void {}
3
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
109
22
ee8ef14e158d Now able to include through composer
Luka Sitas <sitas.luka.97@gmail.com>
parents: 19
diff changeset
110 protected function createController(): void
3
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
111 {
5
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
112 $this->call('mf:controller', ['table' => $this->getTableInput(), '--fresh' => $this->option('fresh')]);
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
113 }
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
114
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
115 protected function createModel()
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
116 {
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
117 $this->call('mf:model', ['table' => $this->getTableInput(), '--fresh' => $this->option('fresh')]);
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
118 }
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
119
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
120 protected function createRequest()
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
121 {
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
122 $this->call('mf:request', ['table' => $this->getTableInput(), '--fresh' => $this->option('fresh'), '--all' => true]);
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
123 }
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
124
25
1a717c7b211f added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents: 23
diff changeset
125 protected function createView()
1a717c7b211f added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents: 23
diff changeset
126 {
1a717c7b211f added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents: 23
diff changeset
127 $this->call('mf:view', ['table' => $this->getTableInput(), '--fresh' => $this->option('fresh'), '--all' => true]);
1a717c7b211f added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents: 23
diff changeset
128 }
1a717c7b211f added support for some basic views
Luka Sitas <sitas.luka.97@gmail.com>
parents: 23
diff changeset
129
5
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
130 protected function createRoute()
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
131 {
b0b2e79ad8e6 Not exatly sure what was changed but commiting to it :)
luka
parents: 3
diff changeset
132 $this->call('mf:route', ['table' => $this->getTableInput(), '--fresh' => $this->option('fresh')]);
3
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
133 }
36
76584181267a Got factories working in a basic way, not sure how complex tables will handle it though
Luka Sitas <sitas.luka.97@gmail.com>
parents: 25
diff changeset
134
76584181267a Got factories working in a basic way, not sure how complex tables will handle it though
Luka Sitas <sitas.luka.97@gmail.com>
parents: 25
diff changeset
135 protected function createFactory()
76584181267a Got factories working in a basic way, not sure how complex tables will handle it though
Luka Sitas <sitas.luka.97@gmail.com>
parents: 25
diff changeset
136 {
76584181267a Got factories working in a basic way, not sure how complex tables will handle it though
Luka Sitas <sitas.luka.97@gmail.com>
parents: 25
diff changeset
137 $this->call('mf:factory', ['table' => $this->getTableInput(), '--fresh' => $this->option('fresh')]);
76584181267a Got factories working in a basic way, not sure how complex tables will handle it though
Luka Sitas <sitas.luka.97@gmail.com>
parents: 25
diff changeset
138 }
3
6468684362c2 It works! Created a controller, no update insert but it works
luka
parents:
diff changeset
139 }