diff --git a/assets/config.php b/assets/config.php index e4985573..e425b806 100644 --- a/assets/config.php +++ b/assets/config.php @@ -3,9 +3,10 @@ declare(strict_types=1); return [ - 'storage_driver' => Stancl\Tenancy\StorageDrivers\Database\DatabaseStorageDriver::class, - 'storage' => [ - 'db' => [ // Stancl\Tenancy\StorageDrivers\Database\DatabaseStorageDriver + 'storage_driver' => 'db', + 'storage_drivers' => [ + 'db' => [ + 'driver' => Stancl\Tenancy\StorageDrivers\Database\DatabaseStorageDriver::class, 'data_column' => 'data', 'custom_columns' => [ // 'plan', @@ -16,7 +17,8 @@ return [ 'DomainModel' => 'domains', ], ], - 'redis' => [ // Stancl\Tenancy\StorageDrivers\RedisStorageDriver + 'redis' => [ + 'driver' => Stancl\Tenancy\StorageDrivers\RedisStorageDriver::class, 'connection' => 'tenancy', ], ], diff --git a/src/DatabaseManager.php b/src/DatabaseManager.php index dd41b772..c57c4ef7 100644 --- a/src/DatabaseManager.php +++ b/src/DatabaseManager.php @@ -189,8 +189,9 @@ class DatabaseManager return DB::connection($this->getCentralConnectionName()); } + // todo this should not depend on the storage driver public function getCentralConnectionName(): string { - return $this->app['config']['tenancy.storage.db.connection'] ?? $this->originalDefaultConnectionName; + return $this->app['config']['tenancy.storage_drivers.db.connection'] ?? $this->originalDefaultConnectionName; } } diff --git a/src/StorageDrivers/Database/DomainModel.php b/src/StorageDrivers/Database/DomainModel.php index aa348887..abddff4b 100644 --- a/src/StorageDrivers/Database/DomainModel.php +++ b/src/StorageDrivers/Database/DomainModel.php @@ -20,6 +20,6 @@ class DomainModel extends Model public function getTable() { - return config('tenancy.storage.db.table_names.DomainModel', 'domains'); + return config('tenancy.storage_drivers.db.table_names.DomainModel', 'domains'); } } diff --git a/src/StorageDrivers/Database/TenantModel.php b/src/StorageDrivers/Database/TenantModel.php index 36c24b58..782d0308 100644 --- a/src/StorageDrivers/Database/TenantModel.php +++ b/src/StorageDrivers/Database/TenantModel.php @@ -20,17 +20,17 @@ class TenantModel extends Model public function getTable() { - return config('tenancy.storage.db.table_names.TenantModel', 'tenants'); + return config('tenancy.storage_drivers.db.table_names.TenantModel', 'tenants'); } public static function dataColumn() { - return config('tenancy.storage.db.data_column', 'data'); + return config('tenancy.storage_drivers.db.data_column', 'data'); } public static function customColumns() { - return config('tenancy.storage.db.custom_columns', []); + return config('tenancy.storage_drivers.db.custom_columns', []); } public static function getAllTenants(array $ids) diff --git a/src/StorageDrivers/RedisStorageDriver.php b/src/StorageDrivers/RedisStorageDriver.php index f2d6bba3..4e35834f 100644 --- a/src/StorageDrivers/RedisStorageDriver.php +++ b/src/StorageDrivers/RedisStorageDriver.php @@ -26,7 +26,7 @@ class RedisStorageDriver implements StorageDriver public function __construct(Application $app, Redis $redis) { $this->app = $app; - $this->redis = $redis->connection($app['config']['tenancy.redis.connection'] ?? 'tenancy'); + $this->redis = $redis->connection($app['config']['tenancy.storage_drivers.redis.connection'] ?? 'tenancy'); } /** diff --git a/src/TenancyServiceProvider.php b/src/TenancyServiceProvider.php index 0e847c4b..8329acb0 100644 --- a/src/TenancyServiceProvider.php +++ b/src/TenancyServiceProvider.php @@ -21,7 +21,7 @@ class TenancyServiceProvider extends ServiceProvider $this->mergeConfigFrom(__DIR__ . '/../assets/config.php', 'tenancy'); $this->app->bind(Contracts\StorageDriver::class, function ($app) { - return $app->make($app['config']['tenancy.storage_driver']); + return $app->make($app['config']['tenancy.storage_drivers'][$app['config']['tenancy.storage_driver']]['driver']); }); $this->app->bind(Contracts\UniqueIdentifierGenerator::class, $this->app['config']['tenancy.unique_id_generator']); $this->app->singleton(DatabaseManager::class); diff --git a/tests/TenantStorageTest.php b/tests/TenantStorageTest.php index 047aae7d..88bd5823 100644 --- a/tests/TenantStorageTest.php +++ b/tests/TenantStorageTest.php @@ -114,7 +114,7 @@ class TenantStorageTest extends TestCase /** @test */ public function tenant_model_uses_correct_connection() { - config(['tenancy.storage.db.connection' => 'foo']); + config(['tenancy.storage_drivers.db.connection' => 'foo']); $this->assertSame('foo', (new TenantModel)->getConnectionName()); } @@ -149,7 +149,7 @@ class TenantStorageTest extends TestCase ]); config(['database.default' => 'sqlite']); // fix issue caused by loadMigrationsFrom - config(['tenancy.storage.db.custom_columns' => [ + config(['tenancy.storage_drivers.db.custom_columns' => [ 'foo', ]]); diff --git a/tests/TestCase.php b/tests/TestCase.php index 3fff0a14..19b0a83f 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -5,8 +5,6 @@ declare(strict_types=1); namespace Stancl\Tenancy\Tests; use Illuminate\Support\Facades\Redis; -use Stancl\Tenancy\StorageDrivers\Database\DatabaseStorageDriver; -use Stancl\Tenancy\StorageDrivers\RedisStorageDriver; use Stancl\Tenancy\Tenant; abstract class TestCase extends \Orchestra\Testbench\TestCase @@ -99,21 +97,13 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase 'database.redis.client' => env('TENANCY_TEST_REDIS_CLIENT', 'phpredis'), 'tenancy.redis.prefixed_connections' => ['default'], 'tenancy.migrations_directory' => database_path('../migrations'), - 'tenancy.storage.db.connection' => 'central', + 'tenancy.storage_drivers.db.connection' => 'central', 'tenancy.bootstrappers.redis' => \Stancl\Tenancy\TenancyBootstrappers\RedisTenancyBootstrapper::class, ]); $app->singleton(\Stancl\Tenancy\TenancyBootstrappers\RedisTenancyBootstrapper::class); - if (env('TENANCY_TEST_STORAGE_DRIVER', 'redis') === 'redis') { - $app['config']->set([ - 'tenancy.storage_driver' => RedisStorageDriver::class, - ]); - } elseif (env('TENANCY_TEST_STORAGE_DRIVER', 'redis') === 'db') { - $app['config']->set([ - 'tenancy.storage_driver' => DatabaseStorageDriver::class, - ]); - } + $app['config']->set(['tenancy.storage_driver' => env('TENANCY_TEST_STORAGE_DRIVER', 'redis')]); } protected function getPackageProviders($app)