2
2
3
3
namespace Eghamat24 \DatabaseRepository \Commands ;
4
4
5
+ use Illuminate \Support \Collection ;
5
6
use Illuminate \Support \Str ;
6
7
use Eghamat24 \DatabaseRepository \Creators \BaseCreator ;
7
8
use Eghamat24 \DatabaseRepository \Creators \CreatorEnum ;
@@ -35,18 +36,7 @@ public function handle(): void
35
36
36
37
$ this ->checkEmpty ($ columns , $ this ->tableName );
37
38
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 );
50
40
51
41
$ attributeStub = file_get_contents ($ this ->enumStubPath . 'attribute.stub ' );
52
42
@@ -63,4 +53,46 @@ public function handle(): void
63
53
$ this ->finalized ($ filenameWithPath , $ enumName , $ baseContent );
64
54
}
65
55
}
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
+ }
66
98
}
0 commit comments