1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2025-12-12 18:44:03 +00:00
This commit is contained in:
Samuel Štancl 2019-07-25 23:26:36 +02:00
parent ae5527c9a9
commit a3f37b7f77
7 changed files with 78 additions and 6 deletions

View file

@ -57,6 +57,10 @@ class Migrate extends MigrateCommand
parent::handle();
});
$this->database->disconnect();
if (tenancy()->initialized) {
tenancy()->switchDatabaseConnection();
} else {
$this->database->disconnect();
}
}
}

View file

@ -56,5 +56,11 @@ class Rollback extends RollbackCommand
// Migrate
parent::handle();
});
if (tenancy()->initialized) {
tenancy()->switchDatabaseConnection();
} else {
$this->database->disconnect();
}
}
}

View file

@ -2,10 +2,8 @@
namespace Stancl\Tenancy\Commands;
use Illuminate\Console\Command;
use Stancl\Tenancy\DatabaseManager;
use Stancl\Tenancy\Traits\HasATenantsOption;
use Illuminate\Database\Migrations\Migrator;
use Illuminate\Database\Console\Seeds\SeedCommand;
use Illuminate\Database\ConnectionResolverInterface;
@ -56,5 +54,11 @@ class Seed extends SeedCommand
// Seed
parent::handle();
});
if (tenancy()->initialized) {
tenancy()->switchDatabaseConnection();
} else {
$this->database->disconnect();
}
}
}

View file

@ -10,9 +10,17 @@ use Stancl\Tenancy\Exceptions\PhpRedisNotInstalledException;
trait BootstrapsTenancy
{
public $originalSettings = [];
/**
* Was tenancy initialized/bootstrapped?
*
* @var boolean
*/
public $initialized = false;
public function bootstrap()
{
$this->initialized = true;
$this->switchDatabaseConnection();
if ($this->app['config']['tenancy.redis.tenancy']) {
$this->setPhpRedisPrefix($this->app['config']['tenancy.redis.prefixed_connections']);
@ -23,6 +31,8 @@ trait BootstrapsTenancy
public function end()
{
$this->initialized = false;
$this->disconnectDatabase();
if ($this->app['config']['tenancy.redis.tenancy']) {
$this->resetPhpRedisPrefix($this->app['config']['tenancy.redis.prefixed_connections']);
@ -53,7 +63,8 @@ trait BootstrapsTenancy
}
}
public function resetPhpRedisPrefix($connections = ['default']) {
public function resetPhpRedisPrefix($connections = ['default'])
{
foreach ($connections as $connection) {
$client = Redis::connection($connection)->client();

View file

@ -4,6 +4,8 @@ namespace Stancl\Tenancy\Tests;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\DB;
use Stancl\Tenancy\Tests\Etc\ExampleSeeder;
class CommandsTest extends TestCase
{
@ -72,4 +74,27 @@ class CommandsTest extends TestCase
{
$this->markTestIncomplete();
}
/** @test */
public function database_connection_is_switched_to_default_after_migrating_or_seeding_or_rolling_back()
{
$originalDBName = DB::connection()->getDatabaseName();
Artisan::call('tenants:migrate');
$this->assertSame($originalDBName, DB::connection()->getDatabaseName());
Artisan::call('tenants:seed', ['--class' => ExampleSeeder::class]);
$this->assertSame($originalDBName, DB::connection()->getDatabaseName());
Artisan::call('tenants:rollback');
$this->assertSame($originalDBName, DB::connection()->getDatabaseName());
}
/** @test */
public function database_connection_is_switched_to_default_after_migrating_or_seeding_or_rolling_back_when_tenancy_has_been_initialized()
{
tenancy()->init('localhost');
$this->database_connection_is_switched_to_default_after_migrating_or_seeding_or_rolling_back();
}
}

View file

@ -0,0 +1,24 @@
<?php
namespace Stancl\Tenancy\Tests\Etc;
use Illuminate\Support\Str;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class ExampleSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10).'@gmail.com',
'password' => bcrypt('password'),
]);
}
}

View file

@ -106,7 +106,6 @@ class TenantManagerTest extends TestCase
public function tenancy_can_be_ended()
{
$originals = [
'databasePDO' => DB::connection()->getPDO(),
'databaseName' => DB::connection()->getDatabaseName(),
'storage_path' => storage_path(),
'storage_root' => Storage::disk('local')->getAdapter()->getPathPrefix(),
@ -139,7 +138,6 @@ class TenantManagerTest extends TestCase
public function tenancy_can_be_ended_after_reidentification()
{
$originals = [
'databasePDO' => DB::connection()->getPDO(),
'databaseName' => DB::connection()->getDatabaseName(),
'storage_path' => storage_path(),
'storage_root' => Storage::disk('local')->getAdapter()->getPathPrefix(),