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:
parent
5bb743f73d
commit
98ce0ee294
3 changed files with 47 additions and 1 deletions
|
|
@ -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' => [
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue