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

Clean up TenantCannotBeCreatedException

This commit is contained in:
Samuel Štancl 2019-09-15 09:40:53 +02:00
parent 2657df5a88
commit 15a7db9e71
5 changed files with 12 additions and 18 deletions

View file

@ -43,12 +43,13 @@ interface StorageDriver
public function all(array $ids = []): array;
/**
* Check if a tenant can be created.
* Ensure a tenant can be created.
*
* @param Tenant $tenant
* @return true|TenantCannotBeCreatedException
* @return void
* @throws TenantCannotBeCreatedException
*/
public function canCreateTenant(Tenant $tenant);
public function ensureTenantCanBeCreated(Tenant $tenant): void;
/**
* Get a value from storage.

View file

@ -92,15 +92,14 @@ class DatabaseManager
* Check if a tenant can be created.
*
* @param Tenant $tenant
* @return true|TenantCannotBeCreatedException
* @return void
* @throws TenantCannotBeCreatedException
*/
public function canCreate(Tenant $tenant)
public function ensureTenantCanBeCreated(Tenant $tenant): void
{
if ($this->getTenantDatabaseManager($tenant)->databaseExists($database = $tenant->getDatabaseName())) {
return new TenantDatabaseAlreadyExistsException($database);
throw new TenantDatabaseAlreadyExistsException($database);
}
return true;
}
public function createDatabase(Tenant $tenant)

View file

@ -30,7 +30,7 @@ class DatabaseStorageDriver implements StorageDriver
->withDomains(Domains::where('tenant_id', $id)->all()->only('domain')->toArray());
}
public function canCreateTenant(Tenant $tenant)
public function ensureTEnantCanBeCreated(Tenant $tenant)
{
// todo
}

View file

@ -36,7 +36,7 @@ class RedisStorageDriver implements StorageDriver
return $this->app[Tenant::class];
}
public function canCreateTenant(Tenant $tenant)
public function ensureTenantCanBeCreated(Tenant $tenant)
{
// todo
}

View file

@ -83,14 +83,8 @@ class TenantManager
*/
public function ensureTenantCanBeCreated(Tenant $tenant): void
{
// todo move the "throw" responsibility to the canCreateTenant methods?
if (($e = $this->storage->canCreateTenant($tenant)) instanceof TenantCannotBeCreatedException) {
throw new $e;
}
if (($e = $this->database->canCreateTenant($tenant)) instanceof TenantCannotBeCreatedException) {
throw new $e;
}
$this->storage->ensureTenantCanBeCreated($tenant);
$this->database->ensureTenantCanBeCreated($tenant);
}
public function updateTenant(Tenant $tenant): self