From ba15a4bfb9217a34921e9fefa5417fe7763e1acf Mon Sep 17 00:00:00 2001 From: mohammad mahdi khakdaman Date: Sat, 7 Oct 2023 19:48:32 +0330 Subject: [PATCH] fix: don't create database if its exists --- src/Database/DatabaseManager.php | 6 ++++-- src/Jobs/CreateDatabase.php | 8 +++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Database/DatabaseManager.php b/src/Database/DatabaseManager.php index 6242ffa9..35c72622 100644 --- a/src/Database/DatabaseManager.php +++ b/src/Database/DatabaseManager.php @@ -86,20 +86,22 @@ class DatabaseManager /** * Check if a tenant can be created. * + * @retur bool * @throws TenantCannotBeCreatedException * @throws DatabaseManagerNotRegisteredException * @throws TenantDatabaseAlreadyExistsException */ - public function ensureTenantCanBeCreated(TenantWithDatabase $tenant): void + public function ensureTenantCanBeCreated(TenantWithDatabase $tenant): bool { $manager = $tenant->database()->manager(); if ($manager->databaseExists($database = $tenant->database()->getName())) { - throw new TenantDatabaseAlreadyExistsException($database); + return false; } if ($manager instanceof ManagesDatabaseUsers && $manager->userExists($username = $tenant->database()->getUsername())) { throw new TenantDatabaseUserAlreadyExistsException($username); } + return true; } } diff --git a/src/Jobs/CreateDatabase.php b/src/Jobs/CreateDatabase.php index 3cb2a6b4..c2114870 100644 --- a/src/Jobs/CreateDatabase.php +++ b/src/Jobs/CreateDatabase.php @@ -37,9 +37,11 @@ class CreateDatabase implements ShouldQueue } $this->tenant->database()->makeCredentials(); - $databaseManager->ensureTenantCanBeCreated($this->tenant); - $this->tenant->database()->manager()->createDatabase($this->tenant); + + if ($databaseManager->ensureTenantCanBeCreated($this->tenant)) { + $this->tenant->database()->manager()->createDatabase($this->tenant); - event(new DatabaseCreated($this->tenant)); + event(new DatabaseCreated($this->tenant)); + } } }