From f7ca2937fd670533441cafabcd0a4e1150875997 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20=C5=A0tancl?= Date: Thu, 15 Aug 2019 21:37:46 +0200 Subject: [PATCH] finally fixed the migrations issue --- src/StorageDrivers/RedisStorageDriver.php | 2 +- src/Tenant.php | 9 +++++++-- src/assets/config.php | 14 +++++++++++--- .../2019_08_08_000000_create_tenants_table.php | 7 +++++-- tests/TestCase.php | 16 ++++++++-------- 5 files changed, 32 insertions(+), 16 deletions(-) diff --git a/src/StorageDrivers/RedisStorageDriver.php b/src/StorageDrivers/RedisStorageDriver.php index 1d9101b2..63c087af 100644 --- a/src/StorageDrivers/RedisStorageDriver.php +++ b/src/StorageDrivers/RedisStorageDriver.php @@ -11,7 +11,7 @@ class RedisStorageDriver implements StorageDriver public function __construct() { - $this->redis = Redis::connection('tenancy'); + $this->redis = Redis::connection(config('tenancy.redis.connection', 'tenancy')); } public function identifyTenant(string $domain): array diff --git a/src/Tenant.php b/src/Tenant.php index d8f06dfc..15f714f5 100644 --- a/src/Tenant.php +++ b/src/Tenant.php @@ -20,12 +20,17 @@ class Tenant extends Model public function dataColumn() { - return config('tenancy.db_storage.data_column', 'data'); + return config('tenancy.storage.db.data_column', 'data'); } public function customColumns() { - return config('tenancy.db_storage.custom_columns', []); + return config('tenancy.storage.db.custom_columns', []); + } + + public function getConnectionName() + { + return config('tenancy.storage.db.connection'); } public function getFromData(string $key) diff --git a/src/assets/config.php b/src/assets/config.php index 501f1766..36e88f59 100644 --- a/src/assets/config.php +++ b/src/assets/config.php @@ -2,9 +2,17 @@ return [ 'storage_driver' => 'Stancl\Tenancy\StorageDrivers\DatabaseStorageDriver', - 'db_storage' => [ - 'data_column' => 'data', - 'custom_columns' => [], + 'storage' => [ + 'db' => [ + 'data_column' => 'data', + 'custom_columns' => [ + // 'plan', + ], + 'connection' => 'central', + ], + 'redis' => [ + 'connection' => 'tenancy', + ], ], 'tenant_route_namespace' => 'App\Http\Controllers', 'exempt_domains' => [ diff --git a/src/assets/migrations/2019_08_08_000000_create_tenants_table.php b/src/assets/migrations/2019_08_08_000000_create_tenants_table.php index 3563a8d7..2b078a64 100644 --- a/src/assets/migrations/2019_08_08_000000_create_tenants_table.php +++ b/src/assets/migrations/2019_08_08_000000_create_tenants_table.php @@ -14,8 +14,11 @@ class CreateTenantsTable extends Migration public function up() { Schema::create('tenants', function (Blueprint $table) { - $table->string('uuid', 36)->primary(); - $table->string('domain', 255)->index(); + $table->string('uuid', 36)->primary(); // don't change this + $table->string('domain', 255)->index(); // don't change this + + // your indexed columns go here + $table->json('data')->default('{}'); }); } diff --git a/tests/TestCase.php b/tests/TestCase.php index 5fad1ed9..500da97b 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -24,14 +24,8 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase Redis::connection('tenancy')->flushdb(); Redis::connection('cache')->flushdb(); - // $this->loadLaravelMigrations(); - - Artisan::call('migrate:install'); - // $this->loadMigrationsFrom(realpath(__DIR__ . '/../src/assets/migrations')); - - // Artisan::call('migrate:fresh', [ - // '--path' => __DIR__ . '/../src/assets/migrations' - // ]); + config(['database.default' => 'central']); + $this->loadMigrationsFrom(realpath(__DIR__ . '/../src/assets/migrations')); if ($this->autoCreateTenant) { $this->createTenant(); @@ -64,6 +58,8 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase \Dotenv\Dotenv::create(__DIR__ . '/..')->load(); } + fclose(fopen(database_path('central.sqlite'), 'w')); + $app['config']->set([ 'database.redis.cache.host' => env('TENANCY_TEST_REDIS_HOST', '127.0.0.1'), 'database.redis.default.host' => env('TENANCY_TEST_REDIS_HOST', '127.0.0.1'), @@ -77,6 +73,10 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase 'database' => env('TENANCY_TEST_REDIS_DB', 14), 'prefix' => 'abc', // todo unrelated to tenancy, but this doesn't seem to have an effect? try to replicate in a fresh laravel installation ], + 'database.connections.central' => [ + 'driver' => 'sqlite', + 'database' => database_path('central.sqlite'), + ], 'tenancy.database' => [ 'based_on' => 'sqlite', 'prefix' => 'tenant',