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

Merge branch '1.x' into queue-support

This commit is contained in:
Samuel Štancl 2019-08-19 14:07:13 +02:00
commit 81a946593a
3 changed files with 43 additions and 9 deletions

View file

@ -30,7 +30,7 @@ class Tenant extends Model
public function getConnectionName() public function getConnectionName()
{ {
return config('tenancy.storage.db.connection') ?: config('database.default'); return config('tenancy.storage.db.connection');
} }
public static function getAllTenants(array $uuids) public static function getAllTenants(array $uuids)

View file

@ -273,16 +273,23 @@ final class TenantManager
{ {
$uuid = $uuid ?: $this->tenant['uuid']; $uuid = $uuid ?: $this->tenant['uuid'];
// todo make this cache work with arrays
if (\array_key_exists('uuid', $this->tenant) && $uuid === $this->tenant['uuid'] && if (\array_key_exists('uuid', $this->tenant) && $uuid === $this->tenant['uuid'] &&
! \is_array($key) && \array_key_exists($key, $this->tenant)) { ! \is_array($key) && \array_key_exists($key, $this->tenant)) {
return $this->tenant[$key]; return $this->tenant[$key];
} }
if (\is_array($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)) { 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)) { if (! \is_array($key)) {
@ -328,10 +341,15 @@ final class TenantManager
foreach ($key as $k => $v) { foreach ($key as $k => $v) {
$target[$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;
} }
/** /**

View file

@ -131,15 +131,19 @@ class TenantStorageTest extends TestCase
{ {
tenancy()->put('someBool', false); tenancy()->put('someBool', false);
$this->assertSame('boolean', \gettype(tenancy()->get('someBool'))); $this->assertSame('boolean', \gettype(tenancy()->get('someBool')));
$this->assertSame('boolean', \gettype(tenancy()->get(['someBool'])[0]));
tenancy()->put('someInt', 5); tenancy()->put('someInt', 5);
$this->assertSame('integer', \gettype(tenancy()->get('someInt'))); $this->assertSame('integer', \gettype(tenancy()->get('someInt')));
$this->assertSame('integer', \gettype(tenancy()->get(['someInt'])[0]));
tenancy()->put('someDouble', 11.40); tenancy()->put('someDouble', 11.40);
$this->assertSame('double', \gettype(tenancy()->get('someDouble'))); $this->assertSame('double', \gettype(tenancy()->get('someDouble')));
$this->assertSame('double', \gettype(tenancy()->get(['someDouble'])[0]));
tenancy()->put('string', 'foo'); tenancy()->put('string', 'foo');
$this->assertSame('string', \gettype(tenancy()->get('string'))); $this->assertSame('string', \gettype(tenancy()->get('string')));
$this->assertSame('string', \gettype(tenancy()->get(['string'])[0]));
} }
/** @test */ /** @test */
@ -147,9 +151,21 @@ class TenantStorageTest extends TestCase
{ {
config(['tenancy.storage.db.connection' => 'foo']); config(['tenancy.storage.db.connection' => 'foo']);
$this->assertSame('foo', (new Tenant)->getConnectionName()); $this->assertSame('foo', (new Tenant)->getConnectionName());
}
config(['tenancy.storage.db.connection' => null]); /** @test */
config(['database.default' => 'foobar']); public function retrieving_data_without_cache_works()
$this->assertSame('foobar', (new Tenant)->getConnectionName()); {
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']));
} }
} }