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));
 | 
						|
    }
 | 
						|
}
 |