44
55namespace Bow \Console \Command ;
66
7- use Bow \Console \AbstractCommand ;
7+ use Exception ;
8+ use Bow \Support \Str ;
89use Bow \Console \Color ;
9- use Bow \Console \Generator ;
10+ use Bow \Console \AbstractCommand ;
1011use Bow \Console \Traits \ConsoleTrait ;
11- use Bow \Database \Barry \Model ;
12- use Bow \Database \Database ;
13- use Bow \Support \Str ;
14- use Exception ;
1512
1613class SeederCommand extends AbstractCommand
1714{
@@ -24,9 +21,17 @@ class SeederCommand extends AbstractCommand
2421 */
2522 public function all (): void
2623 {
27- $ seeder = $ this -> setting -> getSeederDirectory () . ' /_database.php ' ;
24+ $ seeder_files = [] ;
2825
29- $ this ->make ($ seeder );
26+ foreach (glob ($ this ->setting ->getSeederDirectory () . '/*.php ' ) as $ seeder_file ) {
27+ $ seeder_files [$ seeder_file ] = explode ('. ' , basename ($ seeder_file ))[0 ];
28+ }
29+
30+ foreach ($ seeder_files as $ seeder_file => $ seeder_class_name ) {
31+ echo Color::green ("Seeding: $ seeder_file " );
32+
33+ $ this ->make ($ seeder_file , $ seeder_class_name );
34+ }
3035 }
3136
3237 /**
@@ -35,34 +40,17 @@ public function all(): void
3540 * @param string $seed_filename
3641 * @return void
3742 */
38- private function make (string $ seed_filename ): void
43+ private function make (string $ seed_filename, string $ seeder_class_name ): void
3944 {
40- $ seeds = include $ seed_filename ;
41-
42- $ seed_collection = array_merge ($ seeds );
43-
44- // Get the database connexion
45- $ connection = $ this ->arg ->getParameters ()->get ('--connection ' , config ("database.default " ));
46-
4745 try {
48- $ connection = Database::connection ($ connection );
49-
50- foreach ($ seed_collection as $ table => $ seed ) {
51- if (class_exists ($ table )) {
52- $ instance = app ($ table );
53- if ($ instance instanceof Model) {
54- $ table = $ instance ->getTable ();
55- }
56- }
57-
58- $ result = $ connection ->table ($ table )->insert ($ seed );
59-
60- echo Color::green ("$ result seed " . ($ result > 1 ? 's ' : '' ) . " on $ table table \n" );
61- }
46+ include_once $ seed_filename ;
47+ $ time = explode ('- ' , $ seeder_class_name )[0 ];
48+ $ seeder_class_name = str_replace ($ time , '' , $ seeder_class_name );
49+ $ seeder_class_name = Str::camel ($ seeder_class_name );
50+ (new $ seeder_class_name ())->run ();
6251 } catch (Exception $ e ) {
6352 echo Color::red ($ e ->getMessage ());
64-
65- exit (1 );
53+ echo Color::red ("Seeding failed for: $ seed_filename " );
6654 }
6755 }
6856
@@ -72,22 +60,27 @@ private function make(string $seed_filename): void
7260 * @param string|null $seeder_name
7361 * @return void
7462 */
75- public function table (?string $ seeder_name = null ): void
63+ public function file (?string $ seeder_class_name = null ): void
7664 {
77- if (is_null ($ seeder_name )) {
78- $ this ->throwFailsCommand ('Specify the seeder table name ' , 'help seed ' );
65+ if (is_null ($ seeder_class_name )) {
66+ $ this ->throwFailsCommand ('Specify the seeder file name ' , 'help seed ' );
7967 }
8068
81- $ seeder_name = trim ($ seeder_name );
82-
83- if (!file_exists ($ this ->setting ->getSeederDirectory () . "/ {$ seeder_name }.php " )) {
84- echo Color::red ("Seeder $ seeder_name not exists. " );
69+ $ seeder_file = [];
8570
86- exit (1 );
71+ foreach (glob ($ this ->setting ->getSeederDirectory () . '/*.php ' ) as $ seeder_file ) {
72+ $ basename = explode ('. ' , basename ($ seeder_file ))[0 ];
73+ if ($ seeder_class_name != $ basename ) {
74+ continue ;
75+ }
76+ $ seeder_file [$ seeder_file ] = explode ('. ' , basename ($ seeder_file ))[0 ];
77+ break ;
8778 }
8879
89- $ this ->make (
90- $ this ->setting ->getSeederDirectory () . "/ {$ seeder_name }.php "
91- );
80+ foreach ($ seeder_file as $ seeder_file => $ seeder_class_name ) {
81+ echo Color::green ("Seeding: $ seeder_file " );
82+
83+ $ this ->make ($ seeder_file , $ seeder_class_name );
84+ }
9285 }
9386}
0 commit comments