1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2025-12-12 15:54:03 +00:00

[2.x] Don't purge central connections (#189)

* Make sure central connections aren't ever purged

* Extract setDefaultConnection()

* Regression test w/ markTestIncomplete()

* Apply fixes from StyleCI
This commit is contained in:
Samuel Štancl 2019-10-19 23:52:13 +02:00 committed by GitHub
parent c8a0a58df6
commit 479df83027
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 1 deletions

View file

@ -39,6 +39,7 @@ class DatabaseManager
public function connect(Tenant $tenant) public function connect(Tenant $tenant)
{ {
$this->createTenantConnection($tenant->getDatabaseName(), $tenant->getConnectionName()); $this->createTenantConnection($tenant->getDatabaseName(), $tenant->getConnectionName());
$this->setDefaultConnection($tenant->getConnectionName());
$this->switchConnection($tenant->getConnectionName()); $this->switchConnection($tenant->getConnectionName());
} }
@ -49,9 +50,23 @@ class DatabaseManager
*/ */
public function reconnect() public function reconnect()
{ {
// Opposite order to connect() because we don't
// want to ever purge the central connection
$this->setDefaultConnection($this->originalDefaultConnectionName);
$this->switchConnection($this->originalDefaultConnectionName); $this->switchConnection($this->originalDefaultConnectionName);
} }
/**
* Change the default database connection config.
*
* @param string $connection
* @return void
*/
public function setDefaultConnection(string $connection)
{
$this->app['config']['database.default'] = $connection;
}
/** /**
* Create the tenant database connection. * Create the tenant database connection.
* *
@ -102,7 +117,6 @@ class DatabaseManager
*/ */
public function switchConnection(string $connection) public function switchConnection(string $connection)
{ {
$this->app['config']['database.default'] = $connection;
$this->database->purge(); $this->database->purge();
$this->database->reconnect($connection); $this->database->reconnect($connection);
$this->database->setDefaultConnection($connection); $this->database->setDefaultConnection($connection);

View file

@ -45,4 +45,21 @@ class DatabaseManagerTest extends TestCase
$this->assertSame('tenant', config('database.default')); $this->assertSame('tenant', config('database.default'));
$this->assertSame('bar', config('database.connections.' . config('database.default') . '.foo')); $this->assertSame('bar', config('database.connections.' . config('database.default') . '.foo'));
} }
/** @test */
public function ending_tenancy_doesnt_purge_the_central_connection()
{
$this->markTestIncomplete('Seems like this only happens on MySQL?');
// regression test for https://github.com/stancl/tenancy/pull/189
// config(['tenancy.migrate_after_creation' => true]);
tenancy()->create(['foo.localhost']);
tenancy()->init('foo.localhost');
tenancy()->end();
$this->assertNotEmpty(tenancy()->all());
tenancy()->all()->each->delete();
}
} }