@@ 11-108 (lines=98) @@ | ||
8 | use Symfony\Component\Console\Input\InputArgument; |
|
9 | use Symfony\Component\Console\Input\InputOption; |
|
10 | ||
11 | class MigrateResetCommand extends ComponentCommand |
|
12 | { |
|
13 | use MigrationLoaderTrait; |
|
14 | ||
15 | /** |
|
16 | * The console command name. |
|
17 | * |
|
18 | * @var string |
|
19 | */ |
|
20 | protected $name = 'component:migrate-reset'; |
|
21 | ||
22 | /** |
|
23 | * The console command description. |
|
24 | * |
|
25 | * @var string |
|
26 | */ |
|
27 | protected $description = 'Reset the components migrations.'; |
|
28 | ||
29 | /** |
|
30 | * Execute the console command. |
|
31 | * |
|
32 | * @return mixed |
|
33 | */ |
|
34 | public function fire() |
|
35 | { |
|
36 | $component = $this->argument('component'); |
|
37 | ||
38 | if (!empty($component)) { |
|
39 | $this->reset($component); |
|
40 | ||
41 | return; |
|
42 | } |
|
43 | ||
44 | foreach (array_reverse($this->laravel['components']->all()) as $component) { |
|
45 | $this->line('Running for component: <info>' . $component->getName() . '</info>'); |
|
46 | ||
47 | $this->reset($component); |
|
48 | } |
|
49 | } |
|
50 | ||
51 | /** |
|
52 | * Rollback migration from the specified component. |
|
53 | * |
|
54 | * @param $component |
|
55 | */ |
|
56 | public function reset($component) |
|
57 | { |
|
58 | if (is_string($component)) { |
|
59 | $component = $this->laravel['components']->findOrFail($component); |
|
60 | } |
|
61 | ||
62 | $migrator = new Migrator($component); |
|
63 | ||
64 | $database = $this->option('database'); |
|
65 | ||
66 | if (!empty($database)) { |
|
67 | $migrator->setDatabase($database); |
|
68 | } |
|
69 | ||
70 | $migrated = $migrator->reset(); |
|
71 | ||
72 | if (count($migrated)) { |
|
73 | foreach ($migrated as $migration) { |
|
74 | $this->line("Rollback: <info>{$migration}</info>"); |
|
75 | } |
|
76 | ||
77 | return; |
|
78 | } |
|
79 | ||
80 | $this->comment('Nothing to rollback.'); |
|
81 | } |
|
82 | ||
83 | /** |
|
84 | * Get the console command arguments. |
|
85 | * |
|
86 | * @return array |
|
87 | */ |
|
88 | protected function getArguments() |
|
89 | { |
|
90 | return [ |
|
91 | ['component', InputArgument::OPTIONAL, 'The name of component will be used.'], |
|
92 | ]; |
|
93 | } |
|
94 | ||
95 | /** |
|
96 | * Get the console command options. |
|
97 | * |
|
98 | * @return array |
|
99 | */ |
|
100 | protected function getOptions() |
|
101 | { |
|
102 | return [ |
|
103 | ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to use.'], |
|
104 | ['force', null, InputOption::VALUE_NONE, 'Force the operation to run when in production.'], |
|
105 | ['pretend', null, InputOption::VALUE_NONE, 'Dump the SQL queries that would be run.'], |
|
106 | ]; |
|
107 | } |
|
108 | } |
|
109 |
@@ 11-108 (lines=98) @@ | ||
8 | use Symfony\Component\Console\Input\InputArgument; |
|
9 | use Symfony\Component\Console\Input\InputOption; |
|
10 | ||
11 | class MigrateRollbackCommand extends ComponentCommand |
|
12 | { |
|
13 | use MigrationLoaderTrait; |
|
14 | ||
15 | /** |
|
16 | * The console command name. |
|
17 | * |
|
18 | * @var string |
|
19 | */ |
|
20 | protected $name = 'component:migrate-rollback'; |
|
21 | ||
22 | /** |
|
23 | * The console command description. |
|
24 | * |
|
25 | * @var string |
|
26 | */ |
|
27 | protected $description = 'Rollback the components migrations.'; |
|
28 | ||
29 | /** |
|
30 | * Execute the console command. |
|
31 | * |
|
32 | * @return mixed |
|
33 | */ |
|
34 | public function fire() |
|
35 | { |
|
36 | $component = $this->argument('component'); |
|
37 | ||
38 | if (!empty($component)) { |
|
39 | $this->rollback($component); |
|
40 | ||
41 | return; |
|
42 | } |
|
43 | ||
44 | foreach (array_reverse($this->laravel['components']->all()) as $component) { |
|
45 | $this->line('Running for component: <info>' . $component->getName() . '</info>'); |
|
46 | ||
47 | $this->rollback($component); |
|
48 | } |
|
49 | } |
|
50 | ||
51 | /** |
|
52 | * Rollback migration from the specified component. |
|
53 | * |
|
54 | * @param $component |
|
55 | */ |
|
56 | public function rollback($component) |
|
57 | { |
|
58 | if (is_string($component)) { |
|
59 | $component = $this->laravel['components']->findOrFail($component); |
|
60 | } |
|
61 | ||
62 | $migrator = new Migrator($component); |
|
63 | ||
64 | $database = $this->option('database'); |
|
65 | ||
66 | if (!empty($database)) { |
|
67 | $migrator->setDatabase($database); |
|
68 | } |
|
69 | ||
70 | $migrated = $migrator->rollback(); |
|
71 | ||
72 | if (count($migrated)) { |
|
73 | foreach ($migrated as $migration) { |
|
74 | $this->line("Rollback: <info>{$migration}</info>"); |
|
75 | } |
|
76 | ||
77 | return; |
|
78 | } |
|
79 | ||
80 | $this->comment('Nothing to rollback.'); |
|
81 | } |
|
82 | ||
83 | /** |
|
84 | * Get the console command arguments. |
|
85 | * |
|
86 | * @return array |
|
87 | */ |
|
88 | protected function getArguments() |
|
89 | { |
|
90 | return [ |
|
91 | ['component', InputArgument::OPTIONAL, 'The name of component will be used.'], |
|
92 | ]; |
|
93 | } |
|
94 | ||
95 | /** |
|
96 | * Get the console command options. |
|
97 | * |
|
98 | * @return array |
|
99 | */ |
|
100 | protected function getOptions() |
|
101 | { |
|
102 | return [ |
|
103 | ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to use.'], |
|
104 | ['force', null, InputOption::VALUE_NONE, 'Force the operation to run when in production.'], |
|
105 | ['pretend', null, InputOption::VALUE_NONE, 'Dump the SQL queries that would be run.'], |
|
106 | ]; |
|
107 | } |
|
108 | } |
|
109 |