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

Make DB creation optional (#299)

This commit is contained in:
Samuel Štancl 2020-02-26 08:49:08 +01:00 committed by GitHub
parent 5bb743f73d
commit 98ce0ee294
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 47 additions and 1 deletions

View file

@ -91,6 +91,7 @@ return [
// 'paypal_api_key' => 'services.paypal.api_key', // 'paypal_api_key' => 'services.paypal.api_key',
], ],
'home_url' => '/app', 'home_url' => '/app',
'create_database' => true,
'queue_database_creation' => false, 'queue_database_creation' => false,
'migrate_after_creation' => false, // run migrations after creating a tenant 'migrate_after_creation' => false, // run migrations after creating a tenant
'migration_parameters' => [ 'migration_parameters' => [

View file

@ -98,7 +98,9 @@ class TenantManager
}; };
} }
if ($this->shouldCreateDatabase($tenant)) {
$this->database->createDatabase($tenant, $afterCreating); $this->database->createDatabase($tenant, $afterCreating);
}
$this->event('tenant.created', $tenant); $this->event('tenant.created', $tenant);
@ -378,6 +380,15 @@ class TenantManager
return array_diff_key($this->app['config']['tenancy.bootstrappers'], array_flip($except)); return array_diff_key($this->app['config']['tenancy.bootstrappers'], array_flip($except));
} }
public function shouldCreateDatabase(Tenant $tenant): bool
{
if (array_key_exists('_tenancy_create_database', $tenant->data)) {
return $tenant->data['_tenancy_create_database'];
}
return $this->app['config']['tenancy.create_database'] ?? true;
}
public function shouldMigrateAfterCreation(): bool public function shouldMigrateAfterCreation(): bool
{ {
return $this->app['config']['tenancy.migrate_after_creation'] ?? false; return $this->app['config']['tenancy.migrate_after_creation'] ?? false;

View file

@ -345,4 +345,38 @@ class TenantManagerTest extends TestCase
$this->assertArrayHasKey('foo', $tenant->data); $this->assertArrayHasKey('foo', $tenant->data);
$this->assertArrayHasKey('abc123', $tenant->data); $this->assertArrayHasKey('abc123', $tenant->data);
} }
/** @test */
public function database_creation_can_be_disabled()
{
config(['tenancy.create_database' => false]);
tenancy()->hook('database.creating', function () {
$this->fail();
});
$tenant = Tenant::new()->save();
$this->assertTrue(true);
}
/** @test */
public function database_creation_can_be_disabled_for_specific_tenants()
{
config(['tenancy.create_database' => true]);
tenancy()->hook('database.creating', function () {
$this->assertTrue(true);
});
$tenant = Tenant::new()->save();
tenancy()->hook('database.creating', function () {
$this->fail();
});
$tenant2 = Tenant::new()->withData([
'_tenancy_create_database' => false,
])->save();
}
} }