226 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			226 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Illuminate\Database;
 | |
| 
 | |
| use Illuminate\Contracts\Support\DeferrableProvider;
 | |
| use Illuminate\Database\Console\Migrations\FreshCommand;
 | |
| use Illuminate\Database\Console\Migrations\InstallCommand;
 | |
| use Illuminate\Database\Console\Migrations\MigrateCommand;
 | |
| use Illuminate\Database\Console\Migrations\MigrateMakeCommand;
 | |
| use Illuminate\Database\Console\Migrations\RefreshCommand;
 | |
| use Illuminate\Database\Console\Migrations\ResetCommand;
 | |
| use Illuminate\Database\Console\Migrations\RollbackCommand;
 | |
| use Illuminate\Database\Console\Migrations\StatusCommand;
 | |
| use Illuminate\Database\Migrations\DatabaseMigrationRepository;
 | |
| use Illuminate\Database\Migrations\MigrationCreator;
 | |
| use Illuminate\Database\Migrations\Migrator;
 | |
| use Illuminate\Support\ServiceProvider;
 | |
| 
 | |
| class MigrationServiceProvider extends ServiceProvider implements DeferrableProvider
 | |
| {
 | |
|     /**
 | |
|      * The commands to be registered.
 | |
|      *
 | |
|      * @var array
 | |
|      */
 | |
|     protected $commands = [
 | |
|         'Migrate' => 'command.migrate',
 | |
|         'MigrateFresh' => 'command.migrate.fresh',
 | |
|         'MigrateInstall' => 'command.migrate.install',
 | |
|         'MigrateRefresh' => 'command.migrate.refresh',
 | |
|         'MigrateReset' => 'command.migrate.reset',
 | |
|         'MigrateRollback' => 'command.migrate.rollback',
 | |
|         'MigrateStatus' => 'command.migrate.status',
 | |
|         'MigrateMake' => 'command.migrate.make',
 | |
|     ];
 | |
| 
 | |
|     /**
 | |
|      * Register the service provider.
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     public function register()
 | |
|     {
 | |
|         $this->registerRepository();
 | |
| 
 | |
|         $this->registerMigrator();
 | |
| 
 | |
|         $this->registerCreator();
 | |
| 
 | |
|         $this->registerCommands($this->commands);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Register the migration repository service.
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     protected function registerRepository()
 | |
|     {
 | |
|         $this->app->singleton('migration.repository', function ($app) {
 | |
|             $table = $app['config']['database.migrations'];
 | |
| 
 | |
|             return new DatabaseMigrationRepository($app['db'], $table);
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Register the migrator service.
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     protected function registerMigrator()
 | |
|     {
 | |
|         // The migrator is responsible for actually running and rollback the migration
 | |
|         // files in the application. We'll pass in our database connection resolver
 | |
|         // so the migrator can resolve any of these connections when it needs to.
 | |
|         $this->app->singleton('migrator', function ($app) {
 | |
|             $repository = $app['migration.repository'];
 | |
| 
 | |
|             return new Migrator($repository, $app['db'], $app['files'], $app['events']);
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Register the migration creator.
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     protected function registerCreator()
 | |
|     {
 | |
|         $this->app->singleton('migration.creator', function ($app) {
 | |
|             return new MigrationCreator($app['files'], $app->basePath('stubs'));
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Register the given commands.
 | |
|      *
 | |
|      * @param  array  $commands
 | |
|      * @return void
 | |
|      */
 | |
|     protected function registerCommands(array $commands)
 | |
|     {
 | |
|         foreach (array_keys($commands) as $command) {
 | |
|             $this->{"register{$command}Command"}();
 | |
|         }
 | |
| 
 | |
|         $this->commands(array_values($commands));
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Register the command.
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     protected function registerMigrateCommand()
 | |
|     {
 | |
|         $this->app->singleton('command.migrate', function ($app) {
 | |
|             return new MigrateCommand($app['migrator']);
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Register the command.
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     protected function registerMigrateFreshCommand()
 | |
|     {
 | |
|         $this->app->singleton('command.migrate.fresh', function () {
 | |
|             return new FreshCommand;
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Register the command.
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     protected function registerMigrateInstallCommand()
 | |
|     {
 | |
|         $this->app->singleton('command.migrate.install', function ($app) {
 | |
|             return new InstallCommand($app['migration.repository']);
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Register the command.
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     protected function registerMigrateMakeCommand()
 | |
|     {
 | |
|         $this->app->singleton('command.migrate.make', function ($app) {
 | |
|             // Once we have the migration creator registered, we will create the command
 | |
|             // and inject the creator. The creator is responsible for the actual file
 | |
|             // creation of the migrations, and may be extended by these developers.
 | |
|             $creator = $app['migration.creator'];
 | |
| 
 | |
|             $composer = $app['composer'];
 | |
| 
 | |
|             return new MigrateMakeCommand($creator, $composer);
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Register the command.
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     protected function registerMigrateRefreshCommand()
 | |
|     {
 | |
|         $this->app->singleton('command.migrate.refresh', function () {
 | |
|             return new RefreshCommand;
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Register the command.
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     protected function registerMigrateResetCommand()
 | |
|     {
 | |
|         $this->app->singleton('command.migrate.reset', function ($app) {
 | |
|             return new ResetCommand($app['migrator']);
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Register the command.
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     protected function registerMigrateRollbackCommand()
 | |
|     {
 | |
|         $this->app->singleton('command.migrate.rollback', function ($app) {
 | |
|             return new RollbackCommand($app['migrator']);
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Register the command.
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     protected function registerMigrateStatusCommand()
 | |
|     {
 | |
|         $this->app->singleton('command.migrate.status', function ($app) {
 | |
|             return new StatusCommand($app['migrator']);
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the services provided by the provider.
 | |
|      *
 | |
|      * @return array
 | |
|      */
 | |
|     public function provides()
 | |
|     {
 | |
|         return array_merge([
 | |
|             'migrator', 'migration.repository', 'migration.creator',
 | |
|         ], array_values($this->commands));
 | |
|     }
 | |
| }
 |