1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2026-02-05 18:54:03 +00:00

Restructure drivers config

This commit is contained in:
Samuel Štancl 2019-09-30 18:28:13 +02:00
parent 6a9128474f
commit b525747bc6
8 changed files with 18 additions and 23 deletions

View file

@ -3,9 +3,10 @@
declare(strict_types=1); declare(strict_types=1);
return [ return [
'storage_driver' => Stancl\Tenancy\StorageDrivers\Database\DatabaseStorageDriver::class, 'storage_driver' => 'db',
'storage' => [ 'storage_drivers' => [
'db' => [ // Stancl\Tenancy\StorageDrivers\Database\DatabaseStorageDriver 'db' => [
'driver' => Stancl\Tenancy\StorageDrivers\Database\DatabaseStorageDriver::class,
'data_column' => 'data', 'data_column' => 'data',
'custom_columns' => [ 'custom_columns' => [
// 'plan', // 'plan',
@ -16,7 +17,8 @@ return [
'DomainModel' => 'domains', 'DomainModel' => 'domains',
], ],
], ],
'redis' => [ // Stancl\Tenancy\StorageDrivers\RedisStorageDriver 'redis' => [
'driver' => Stancl\Tenancy\StorageDrivers\RedisStorageDriver::class,
'connection' => 'tenancy', 'connection' => 'tenancy',
], ],
], ],

View file

@ -189,8 +189,9 @@ class DatabaseManager
return DB::connection($this->getCentralConnectionName()); return DB::connection($this->getCentralConnectionName());
} }
// todo this should not depend on the storage driver
public function getCentralConnectionName(): string 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;
} }
} }

View file

@ -20,6 +20,6 @@ class DomainModel extends Model
public function getTable() public function getTable()
{ {
return config('tenancy.storage.db.table_names.DomainModel', 'domains'); return config('tenancy.storage_drivers.db.table_names.DomainModel', 'domains');
} }
} }

View file

@ -20,17 +20,17 @@ class TenantModel extends Model
public function getTable() 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() 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() 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) public static function getAllTenants(array $ids)

View file

@ -26,7 +26,7 @@ class RedisStorageDriver implements StorageDriver
public function __construct(Application $app, Redis $redis) public function __construct(Application $app, Redis $redis)
{ {
$this->app = $app; $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');
} }
/** /**

View file

@ -21,7 +21,7 @@ class TenancyServiceProvider extends ServiceProvider
$this->mergeConfigFrom(__DIR__ . '/../assets/config.php', 'tenancy'); $this->mergeConfigFrom(__DIR__ . '/../assets/config.php', 'tenancy');
$this->app->bind(Contracts\StorageDriver::class, function ($app) { $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->bind(Contracts\UniqueIdentifierGenerator::class, $this->app['config']['tenancy.unique_id_generator']);
$this->app->singleton(DatabaseManager::class); $this->app->singleton(DatabaseManager::class);

View file

@ -114,7 +114,7 @@ class TenantStorageTest extends TestCase
/** @test */ /** @test */
public function tenant_model_uses_correct_connection() 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()); $this->assertSame('foo', (new TenantModel)->getConnectionName());
} }
@ -149,7 +149,7 @@ class TenantStorageTest extends TestCase
]); ]);
config(['database.default' => 'sqlite']); // fix issue caused by loadMigrationsFrom config(['database.default' => 'sqlite']); // fix issue caused by loadMigrationsFrom
config(['tenancy.storage.db.custom_columns' => [ config(['tenancy.storage_drivers.db.custom_columns' => [
'foo', 'foo',
]]); ]]);

View file

@ -99,21 +99,13 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase
'database.redis.client' => env('TENANCY_TEST_REDIS_CLIENT', 'phpredis'), 'database.redis.client' => env('TENANCY_TEST_REDIS_CLIENT', 'phpredis'),
'tenancy.redis.prefixed_connections' => ['default'], 'tenancy.redis.prefixed_connections' => ['default'],
'tenancy.migrations_directory' => database_path('../migrations'), '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, 'tenancy.bootstrappers.redis' => \Stancl\Tenancy\TenancyBootstrappers\RedisTenancyBootstrapper::class,
]); ]);
$app->singleton(\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' => env('TENANCY_TEST_STORAGE_DRIVER', '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,
]);
}
} }
protected function getPackageProviders($app) protected function getPackageProviders($app)