diff --git a/src/Tenant.php b/src/Tenant.php index 418b78fa..0f14eaac 100644 --- a/src/Tenant.php +++ b/src/Tenant.php @@ -30,7 +30,7 @@ class Tenant extends Model public function getConnectionName() { - return config('tenancy.storage.db.connection') ?: config('database.default'); + return config('tenancy.storage.db.connection'); } public static function getAllTenants(array $uuids) diff --git a/src/TenantManager.php b/src/TenantManager.php index 5c10d80c..de466648 100644 --- a/src/TenantManager.php +++ b/src/TenantManager.php @@ -273,16 +273,23 @@ final class TenantManager { $uuid = $uuid ?: $this->tenant['uuid']; + // todo make this cache work with arrays if (\array_key_exists('uuid', $this->tenant) && $uuid === $this->tenant['uuid'] && ! \is_array($key) && \array_key_exists($key, $this->tenant)) { return $this->tenant[$key]; } if (\is_array($key)) { - return $this->jsonDecodeArrayValues($this->storage->getMany($uuid, $key)); + $data = $this->storage->getMany($uuid, $key); + $data = $this->useJson() ? $this->jsonDecodeArrayValues($data) : $data; + + return $data; } - return \json_decode($this->storage->get($uuid, $key), true); + $data = $this->storage->get($uuid, $key); + $data = $this->useJson() ? \json_decode($data, true) : $data; + + return $data; } /** @@ -319,7 +326,13 @@ final class TenantManager } if (! \is_null($value)) { - return $target[$key] = \json_decode($this->storage->put($uuid, $key, \json_encode($value)), true); + if ($this->useJson()) { + $data = \json_decode($this->storage->put($uuid, $key, \json_encode($value)), true); + } else { + $data = $this->storage->put($uuid, $key, $value); + } + + return $target[$key] = $data; } if (! \is_array($key)) { @@ -328,10 +341,15 @@ final class TenantManager foreach ($key as $k => $v) { $target[$k] = $v; - $key[$k] = \json_encode($v); + + $v = $this->useJson() ? \json_encode($v) : $v; + $key[$k] = $v; } - return $this->jsonDecodeArrayValues($this->storage->putMany($uuid, $key)); + $data = $this->storage->putMany($uuid, $key); + $data = $this->useJson() ? $this->jsonDecodeArrayValues($data) : $data; + + return $data; } /** diff --git a/tests/TenantStorageTest.php b/tests/TenantStorageTest.php index da32f228..2dd3e1b8 100644 --- a/tests/TenantStorageTest.php +++ b/tests/TenantStorageTest.php @@ -131,15 +131,19 @@ class TenantStorageTest extends TestCase { tenancy()->put('someBool', false); $this->assertSame('boolean', \gettype(tenancy()->get('someBool'))); + $this->assertSame('boolean', \gettype(tenancy()->get(['someBool'])[0])); tenancy()->put('someInt', 5); $this->assertSame('integer', \gettype(tenancy()->get('someInt'))); + $this->assertSame('integer', \gettype(tenancy()->get(['someInt'])[0])); tenancy()->put('someDouble', 11.40); $this->assertSame('double', \gettype(tenancy()->get('someDouble'))); + $this->assertSame('double', \gettype(tenancy()->get(['someDouble'])[0])); tenancy()->put('string', 'foo'); $this->assertSame('string', \gettype(tenancy()->get('string'))); + $this->assertSame('string', \gettype(tenancy()->get(['string'])[0])); } /** @test */ @@ -147,9 +151,21 @@ class TenantStorageTest extends TestCase { config(['tenancy.storage.db.connection' => 'foo']); $this->assertSame('foo', (new Tenant)->getConnectionName()); + } - config(['tenancy.storage.db.connection' => null]); - config(['database.default' => 'foobar']); - $this->assertSame('foobar', (new Tenant)->getConnectionName()); + /** @test */ + public function retrieving_data_without_cache_works() + { + tenant()->create('foo.localhost'); + tenancy()->init('foo.localhost'); + + tenancy()->put('foo', 'bar'); + $this->assertSame('bar', tenancy()->get('foo')); + $this->assertSame(['bar'], tenancy()->get(['foo'])); + + tenancy()->end(); + tenancy()->init('foo.localhost'); + $this->assertSame('bar', tenancy()->get('foo')); + $this->assertSame(['bar'], tenancy()->get(['foo'])); } }