Skip to content

Commit 002ae26

Browse files
refactor(Commands): extract extractEnumsFromColumns method
1 parent 8159810 commit 002ae26

File tree

1 file changed

+44
-12
lines changed

1 file changed

+44
-12
lines changed

src/Commands/MakeEnum.php

Lines changed: 44 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Eghamat24\DatabaseRepository\Commands;
44

5+
use Illuminate\Support\Collection;
56
use Illuminate\Support\Str;
67
use Eghamat24\DatabaseRepository\Creators\BaseCreator;
78
use Eghamat24\DatabaseRepository\Creators\CreatorEnum;
@@ -35,18 +36,7 @@ public function handle(): void
3536

3637
$this->checkEmpty($columns, $this->tableName);
3738

38-
$enums = [];
39-
foreach ($columns as $_column) {
40-
41-
if ($_column->DATA_TYPE !== 'enum') {
42-
continue;
43-
}
44-
45-
$enumClassName = Str::studly(Str::singular(ucfirst(Str::camel($_column->TABLE_NAME))) . '_' . $_column->COLUMN_NAME) . 'Enum';
46-
$enums[$enumClassName] = array_filter(explode(',', str_replace(['enum(', '\'', ')'], ['', '', ''], $_column->COLUMN_TYPE)));
47-
$filenameWithPath = $this->relativeEnumsPath . $enumClassName . '.php';
48-
$this->checkDelete($filenameWithPath, $enumClassName, 'Enum');
49-
}
39+
$enums = $this->extractEnumsFromColumns($columns);
5040

5141
$attributeStub = file_get_contents($this->enumStubPath . 'attribute.stub');
5242

@@ -63,4 +53,46 @@ public function handle(): void
6353
$this->finalized($filenameWithPath, $enumName, $baseContent);
6454
}
6555
}
56+
57+
58+
/**
59+
* @param Collection $columns
60+
* @return array
61+
*/
62+
public function extractEnumsFromColumns(Collection $columns): array
63+
{
64+
$enums = [];
65+
foreach ($columns as $_column) {
66+
67+
if ($_column->DATA_TYPE !== 'enum') {
68+
continue;
69+
}
70+
71+
$enumClassName = $this->getEnumClassName($_column);
72+
$enums[$enumClassName] = $this->extractEnumValues($_column->COLUMN_TYPE);
73+
74+
$this->checkDelete(
75+
$this->relativeEnumsPath . $enumClassName . '.php',
76+
$enumClassName,
77+
'Enum'
78+
);
79+
}
80+
81+
return $enums;
82+
}
83+
84+
private function getEnumClassName(mixed $_column): string
85+
{
86+
$tableName = ucfirst(Str::camel($_column->TABLE_NAME));
87+
$columnName = $_column->COLUMN_NAME;
88+
89+
return Str::studly(Str::singular($tableName) . '_' . $columnName) . 'Enum';
90+
}
91+
92+
private function extractEnumValues($columnType): array
93+
{
94+
$items = explode(',', str_replace(['enum(', '\'', ')'], ['', '', ''], $columnType));
95+
96+
return array_filter($items);
97+
}
6698
}

0 commit comments

Comments
 (0)