mirror of
https://github.com/archtechx/tenancy.git
synced 2026-02-05 13:54:04 +00:00
Fixed: make migration commands compatible
This commit is contained in:
parent
f04d4cd80f
commit
a63906f3fd
4 changed files with 44 additions and 20 deletions
|
|
@ -8,39 +8,25 @@ use Illuminate\Contracts\Events\Dispatcher;
|
||||||
use Illuminate\Database\Console\Migrations\MigrateCommand;
|
use Illuminate\Database\Console\Migrations\MigrateCommand;
|
||||||
use Illuminate\Database\Migrations\Migrator;
|
use Illuminate\Database\Migrations\Migrator;
|
||||||
use Stancl\Tenancy\Concerns\DealsWithMigrations;
|
use Stancl\Tenancy\Concerns\DealsWithMigrations;
|
||||||
|
use Stancl\Tenancy\Concerns\ExtendsLaravelCommand;
|
||||||
use Stancl\Tenancy\Concerns\HasATenantsOption;
|
use Stancl\Tenancy\Concerns\HasATenantsOption;
|
||||||
use Stancl\Tenancy\Events\DatabaseMigrated;
|
use Stancl\Tenancy\Events\DatabaseMigrated;
|
||||||
use Stancl\Tenancy\Events\MigratingDatabase;
|
use Stancl\Tenancy\Events\MigratingDatabase;
|
||||||
|
|
||||||
class Migrate extends MigrateCommand
|
class Migrate extends MigrateCommand
|
||||||
{
|
{
|
||||||
use HasATenantsOption, DealsWithMigrations;
|
use HasATenantsOption, DealsWithMigrations, ExtendsLaravelCommand;
|
||||||
|
|
||||||
/**
|
|
||||||
* The console command description.
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
protected $description = 'Run migrations for tenant(s)';
|
protected $description = 'Run migrations for tenant(s)';
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new command instance.
|
|
||||||
*
|
|
||||||
* @param Migrator $migrator
|
|
||||||
* @param Dispatcher $dispatcher
|
|
||||||
*/
|
|
||||||
public function __construct(Migrator $migrator, Dispatcher $dispatcher)
|
public function __construct(Migrator $migrator, Dispatcher $dispatcher)
|
||||||
{
|
{
|
||||||
parent::__construct($migrator, $dispatcher);
|
parent::__construct($migrator, $dispatcher);
|
||||||
|
|
||||||
|
// Add the --tenants option
|
||||||
$this->specifyParameters();
|
$this->specifyParameters();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getDefaultName(): ?string
|
|
||||||
{
|
|
||||||
return 'tenants:migrate';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the console command.
|
* Execute the console command.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -7,13 +7,19 @@ namespace Stancl\Tenancy\Commands;
|
||||||
use Illuminate\Database\Console\Migrations\RollbackCommand;
|
use Illuminate\Database\Console\Migrations\RollbackCommand;
|
||||||
use Illuminate\Database\Migrations\Migrator;
|
use Illuminate\Database\Migrations\Migrator;
|
||||||
use Stancl\Tenancy\Concerns\DealsWithMigrations;
|
use Stancl\Tenancy\Concerns\DealsWithMigrations;
|
||||||
|
use Stancl\Tenancy\Concerns\ExtendsLaravelCommand;
|
||||||
use Stancl\Tenancy\Concerns\HasATenantsOption;
|
use Stancl\Tenancy\Concerns\HasATenantsOption;
|
||||||
use Stancl\Tenancy\Events\DatabaseRolledBack;
|
use Stancl\Tenancy\Events\DatabaseRolledBack;
|
||||||
use Stancl\Tenancy\Events\RollingBackDatabase;
|
use Stancl\Tenancy\Events\RollingBackDatabase;
|
||||||
|
|
||||||
class Rollback extends RollbackCommand
|
class Rollback extends RollbackCommand
|
||||||
{
|
{
|
||||||
use HasATenantsOption, DealsWithMigrations;
|
use HasATenantsOption, DealsWithMigrations, ExtendsLaravelCommand;
|
||||||
|
|
||||||
|
protected static function getTenantCommandName()
|
||||||
|
{
|
||||||
|
return 'tenants:rollback';
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The console command description.
|
* The console command description.
|
||||||
|
|
@ -31,7 +37,6 @@ class Rollback extends RollbackCommand
|
||||||
{
|
{
|
||||||
parent::__construct($migrator);
|
parent::__construct($migrator);
|
||||||
|
|
||||||
$this->setName('tenants:rollback');
|
|
||||||
$this->specifyParameters();
|
$this->specifyParameters();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
20
src/Concerns/ExtendsLaravelCommand.php
Normal file
20
src/Concerns/ExtendsLaravelCommand.php
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Stancl\Tenancy\Concerns;
|
||||||
|
|
||||||
|
trait ExtendsLaravelCommand
|
||||||
|
{
|
||||||
|
public function getName(): ?string
|
||||||
|
{
|
||||||
|
return static::getDefaultName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getDefaultName(): ?string
|
||||||
|
{
|
||||||
|
if (method_exists(static::class, 'getTenantCommandName')) {
|
||||||
|
return static::getTenantCommandName();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'tenants:' . parent::getDefaultName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace Stancl\Tenancy\Tests;
|
namespace Stancl\Tenancy\Tests;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
use Exception;
|
use Exception;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
use Illuminate\Bus\Queueable;
|
use Illuminate\Bus\Queueable;
|
||||||
|
|
@ -24,6 +25,7 @@ use Illuminate\Queue\Events\JobProcessed;
|
||||||
use Illuminate\Queue\Events\JobProcessing;
|
use Illuminate\Queue\Events\JobProcessing;
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
use Illuminate\Foundation\Bus\Dispatchable;
|
use Illuminate\Foundation\Bus\Dispatchable;
|
||||||
|
use PDO;
|
||||||
use Stancl\Tenancy\Events\TenancyInitialized;
|
use Stancl\Tenancy\Events\TenancyInitialized;
|
||||||
use Stancl\Tenancy\Listeners\BootstrapTenancy;
|
use Stancl\Tenancy\Listeners\BootstrapTenancy;
|
||||||
use Stancl\Tenancy\Listeners\RevertToCentralContext;
|
use Stancl\Tenancy\Listeners\RevertToCentralContext;
|
||||||
|
|
@ -52,7 +54,7 @@ class QueueTest extends TestCase
|
||||||
Event::listen(TenancyInitialized::class, BootstrapTenancy::class);
|
Event::listen(TenancyInitialized::class, BootstrapTenancy::class);
|
||||||
Event::listen(TenancyEnded::class, RevertToCentralContext::class);
|
Event::listen(TenancyEnded::class, RevertToCentralContext::class);
|
||||||
|
|
||||||
$this->valuestore = Valuestore::make(__DIR__ . '/Etc/tmp/queuetest.json')->flush();
|
$this->createValueStore();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function tearDown(): void
|
public function tearDown(): void
|
||||||
|
|
@ -60,6 +62,17 @@ class QueueTest extends TestCase
|
||||||
$this->valuestore->flush();
|
$this->valuestore->flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function createValueStore(): void
|
||||||
|
{
|
||||||
|
$valueStorePath = __DIR__ . '/Etc/tmp/queuetest.json';
|
||||||
|
|
||||||
|
if (! file_exists($valueStorePath)) {
|
||||||
|
file_put_contents($valueStorePath, '');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->valuestore = Valuestore::make($valueStorePath)->flush();
|
||||||
|
}
|
||||||
|
|
||||||
protected function withFailedJobs()
|
protected function withFailedJobs()
|
||||||
{
|
{
|
||||||
Schema::connection('central')->create('failed_jobs', function (Blueprint $table) {
|
Schema::connection('central')->create('failed_jobs', function (Blueprint $table) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue