diff --git a/src/Contracts/StorageDriver.php b/src/Contracts/StorageDriver.php index 4cdbe203..c0ceec82 100644 --- a/src/Contracts/StorageDriver.php +++ b/src/Contracts/StorageDriver.php @@ -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. diff --git a/src/DatabaseManager.php b/src/DatabaseManager.php index e8e849b8..9ddc1dc3 100644 --- a/src/DatabaseManager.php +++ b/src/DatabaseManager.php @@ -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) diff --git a/src/StorageDrivers/Database/DatabaseStorageDriver.php b/src/StorageDrivers/Database/DatabaseStorageDriver.php index 0e875402..6c06ee6d 100644 --- a/src/StorageDrivers/Database/DatabaseStorageDriver.php +++ b/src/StorageDrivers/Database/DatabaseStorageDriver.php @@ -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 } diff --git a/src/StorageDrivers/RedisStorageDriver.php b/src/StorageDrivers/RedisStorageDriver.php index 944bd235..93caf54e 100644 --- a/src/StorageDrivers/RedisStorageDriver.php +++ b/src/StorageDrivers/RedisStorageDriver.php @@ -36,7 +36,7 @@ class RedisStorageDriver implements StorageDriver return $this->app[Tenant::class]; } - public function canCreateTenant(Tenant $tenant) + public function ensureTenantCanBeCreated(Tenant $tenant) { // todo } diff --git a/src/TenantManager.php b/src/TenantManager.php index e4098d9e..291633c0 100644 --- a/src/TenantManager.php +++ b/src/TenantManager.php @@ -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