1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2025-12-12 15:54:03 +00:00

[2.x] Restructure drivers config (#151)

* Restructure drivers config

* Apply fixes from StyleCI
This commit is contained in:
Samuel Štancl 2019-09-30 18:38:32 +02:00 committed by GitHub
parent 6cb7f27e6c
commit c965ca5c93
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 18 additions and 25 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

@ -5,8 +5,6 @@ declare(strict_types=1);
namespace Stancl\Tenancy\Tests; namespace Stancl\Tenancy\Tests;
use Illuminate\Support\Facades\Redis; use Illuminate\Support\Facades\Redis;
use Stancl\Tenancy\StorageDrivers\Database\DatabaseStorageDriver;
use Stancl\Tenancy\StorageDrivers\RedisStorageDriver;
use Stancl\Tenancy\Tenant; use Stancl\Tenancy\Tenant;
abstract class TestCase extends \Orchestra\Testbench\TestCase 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'), '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)