From b764d979af618bbd9f3490dc3c3dbffda4e9ed68 Mon Sep 17 00:00:00 2001 From: ALIN <=> Date: Thu, 17 Apr 2025 12:51:49 +0300 Subject: [PATCH] upgraded to native enums --- src/Enums/Connection.php | 11 +++++++++++ src/Enums/Connections.php | 13 ------------- src/Jobs/DropTables.php | 4 ++-- src/Jobs/Migrate.php | 4 ++-- src/Services/MixedConnection.php | 14 +++++++------- src/Services/Tenant.php | 16 ++++++++-------- src/Traits/MixedConnection.php | 14 +++++++------- src/Traits/SystemConnection.php | 6 +++--- src/Traits/SystemResolver.php | 6 +++--- src/Traits/TenantConnection.php | 6 +++--- src/Traits/TenantResolver.php | 6 +++--- 11 files changed, 49 insertions(+), 51 deletions(-) create mode 100644 src/Enums/Connection.php delete mode 100644 src/Enums/Connections.php diff --git a/src/Enums/Connection.php b/src/Enums/Connection.php new file mode 100644 index 0000000..4eaa740 --- /dev/null +++ b/src/Enums/Connection.php @@ -0,0 +1,11 @@ +tenant); - DB::connection(Connections::Tenant) + DB::connection(Connection::Tenant->value) ->getSchemaBuilder() ->dropAllTables(); } diff --git a/src/Jobs/Migrate.php b/src/Jobs/Migrate.php index 3701c01..0ea4f96 100644 --- a/src/Jobs/Migrate.php +++ b/src/Jobs/Migrate.php @@ -9,7 +9,7 @@ use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Artisan; use LaravelEnso\Companies\Models\Company; -use LaravelEnso\Multitenancy\Enums\Connections; +use LaravelEnso\Multitenancy\Enums\Connection; use LaravelEnso\Multitenancy\Services\Tenant; class Migrate implements ShouldQueue @@ -30,7 +30,7 @@ public function handle() Tenant::set($this->tenant); Artisan::call('migrate', [ - '--database' => Connections::Tenant, + '--database' => Connection::Tenant->value, '--path' => '/database/migrations/tenant', '--force' => true, ]); diff --git a/src/Services/MixedConnection.php b/src/Services/MixedConnection.php index 6738af8..f152d99 100644 --- a/src/Services/MixedConnection.php +++ b/src/Services/MixedConnection.php @@ -3,26 +3,26 @@ namespace LaravelEnso\Multitenancy\Services; use Illuminate\Support\Facades\DB; -use LaravelEnso\Multitenancy\Enums\Connections; +use LaravelEnso\Multitenancy\Enums\Connection; class MixedConnection { public static function set($user, $tenant) { - if (! $user->belongsToAdminGroup() || $tenant) { - self::connection(Connections::Tenant); + if (!$user->belongsToAdminGroup() || $tenant) { + self::connection(Connection::Tenant->value); } else { - self::connection(Connections::System); + self::connection(Connection::System->value); } - DB::purge(Connections::Mixed); + DB::purge(Connection::Mixed->value); - DB::reconnect(Connections::Mixed); + DB::reconnect(Connection::Mixed->value); } private static function connection($connection) { - $key = 'database.connections.'.Connections::Mixed; + $key = 'database.connections.' . Connection::Mixed->value; $value = config("database.connections.{$connection}"); config([$key => $value]); } diff --git a/src/Services/Tenant.php b/src/Services/Tenant.php index af51e25..b9745ef 100644 --- a/src/Services/Tenant.php +++ b/src/Services/Tenant.php @@ -5,7 +5,7 @@ use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; use LaravelEnso\Companies\Models\Company; -use LaravelEnso\Multitenancy\Enums\Connections; +use LaravelEnso\Multitenancy\Enums\Connection; class Tenant { @@ -13,13 +13,13 @@ class Tenant public static function set(Company $company) { - $key = 'database.connections.'.Connections::Tenant.'.database'; - $value = self::tenantPrefix().$company->id; + $key = 'database.connections.' . Connection::Tenant->value . '.database'; + $value = self::tenantPrefix() . $company->id; config([$key => $value]); - DB::purge(Connections::Tenant); + DB::purge(Connection::Tenant->value); - DB::reconnect(Connections::Tenant); + DB::reconnect(Connection::Tenant->value); } public static function get() @@ -29,17 +29,17 @@ public static function get() public static function tenantDatabase() { - return config('database.connections.'.Connections::Tenant.'.database'); + return config('database.connections.' . Connection::Tenant->value . '.database'); } private static function tenantId() { - return (int) Str::replaceFirst(Connections::Tenant, '', self::tenantDatabase()); + return (int) Str::replaceFirst(Connection::Tenant->value, '', self::tenantDatabase()); } private static function tenantPrefix() { - if (! isset(self::$tenantPrefix)) { + if (!isset(self::$tenantPrefix)) { self::$tenantPrefix = self::tenantDatabase(); } diff --git a/src/Traits/MixedConnection.php b/src/Traits/MixedConnection.php index 693339a..41a25e4 100644 --- a/src/Traits/MixedConnection.php +++ b/src/Traits/MixedConnection.php @@ -2,7 +2,7 @@ namespace LaravelEnso\Multitenancy\Traits; -use LaravelEnso\Multitenancy\Enums\Connections; +use LaravelEnso\Multitenancy\Enums\Connection; trait MixedConnection { @@ -11,23 +11,23 @@ public function __construct() parent::__construct(...func_get_args()); if (app()->environment('testing')) { - $this->connection = Connections::Testing; + $this->connection = Connection::Testing->value; return; } - $this->connection = empty(config('database.connections.'.Connections::Mixed)) - ? Connections::System - : Connections::Mixed; + $this->connection = empty(config('database.connections.' . Connection::Mixed->value)) + ? Connection::System->value + : Connection::Mixed->value; } public function hasTenantConnection() { - return $this->getConnection()->getName() === Connections::Tenant; + return $this->getConnection()->getName() === Connection::Tenant->value; } public function hasSystemConnection() { - return $this->getConnection()->getName() === Connections::System; + return $this->getConnection()->getName() === Connection::System->value; } } diff --git a/src/Traits/SystemConnection.php b/src/Traits/SystemConnection.php index 163998c..e9f04c1 100644 --- a/src/Traits/SystemConnection.php +++ b/src/Traits/SystemConnection.php @@ -2,7 +2,7 @@ namespace LaravelEnso\Multitenancy\Traits; -use LaravelEnso\Multitenancy\Enums\Connections; +use LaravelEnso\Multitenancy\Enums\Connection; trait SystemConnection { @@ -11,7 +11,7 @@ public function __construct() parent::__construct(...func_get_args()); $this->connection = app()->environment('testing') - ? Connections::Testing - : Connections::System; + ? Connection::Testing->value + : Connection::System->value; } } diff --git a/src/Traits/SystemResolver.php b/src/Traits/SystemResolver.php index 936959f..91c2704 100644 --- a/src/Traits/SystemResolver.php +++ b/src/Traits/SystemResolver.php @@ -3,18 +3,18 @@ namespace LaravelEnso\Multitenancy\Traits; use Illuminate\Support\Facades\DB; -use LaravelEnso\Multitenancy\Enums\Connections; +use LaravelEnso\Multitenancy\Enums\Connection; trait SystemResolver { public function systemTable(string $table) { - return $this->systemDatabase().'.'.$table; + return $this->systemDatabase() . '.' . $table; } public function systemDatabase() { - return DB::connection(Connections::System) + return DB::connection(Connection::System->value) ->getDatabaseName(); } } diff --git a/src/Traits/TenantConnection.php b/src/Traits/TenantConnection.php index 52dd8a3..24963bf 100644 --- a/src/Traits/TenantConnection.php +++ b/src/Traits/TenantConnection.php @@ -2,7 +2,7 @@ namespace LaravelEnso\Multitenancy\Traits; -use LaravelEnso\Multitenancy\Enums\Connections; +use LaravelEnso\Multitenancy\Enums\Connection; trait TenantConnection { @@ -11,7 +11,7 @@ public function __construct() parent::__construct(...func_get_args()); $this->connection = app()->environment('testing') - ? Connections::Testing - : Connections::Tenant; + ? Connection::Testing->value + : Connection::Tenant->value; } } diff --git a/src/Traits/TenantResolver.php b/src/Traits/TenantResolver.php index 958a738..5ec9a80 100644 --- a/src/Traits/TenantResolver.php +++ b/src/Traits/TenantResolver.php @@ -3,18 +3,18 @@ namespace LaravelEnso\Multitenancy\Traits; use Illuminate\Support\Facades\DB; -use LaravelEnso\Multitenancy\Enums\Connections; +use LaravelEnso\Multitenancy\Enums\Connection; trait TenantResolver { public function tenantTable(string $table) { - return $this->tenantDatabase().'.'.$table; + return $this->tenantDatabase() . '.' . $table; } public function tenantDatabase() { - return DB::connection(Connections::Tenant) + return DB::connection(Connection::Tenant->value) ->getDatabaseName(); } }