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

[2.1.0] Fix queue race conditions (#178)

* Add TenantDoesNotExist exception, fix queued migrator serialization

* wip

* Apply fixes from StyleCI

* Use only one config for  queueing

* Apply fixes from StyleCI

* rename test

* rename test
This commit is contained in:
Samuel Štancl 2019-10-17 13:55:10 +02:00 committed by GitHub
parent e98db460ec
commit 3e78410d8a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 78 additions and 28 deletions

View file

@ -10,6 +10,7 @@ use Stancl\Tenancy\Contracts\StorageDriver;
use Stancl\Tenancy\DatabaseManager;
use Stancl\Tenancy\Exceptions\DomainsOccupiedByOtherTenantException;
use Stancl\Tenancy\Exceptions\TenantCouldNotBeIdentifiedException;
use Stancl\Tenancy\Exceptions\TenantDoesNotExistException;
use Stancl\Tenancy\Exceptions\TenantWithThisIdAlreadyExistsException;
use Stancl\Tenancy\StorageDrivers\Database\DomainModel as Domains;
use Stancl\Tenancy\StorageDrivers\Database\TenantModel as Tenants;
@ -59,7 +60,13 @@ class DatabaseStorageDriver implements StorageDriver
public function findById(string $id): Tenant
{
return Tenant::fromStorage(Tenants::find($id)->decoded())
$tenant = Tenants::find($id);
if (! $tenant) {
throw new TenantDoesNotExistException($id);
}
return Tenant::fromStorage($tenant->decoded())
->withDomains($this->getTenantDomains($id));
}

View file

@ -9,6 +9,7 @@ use Illuminate\Foundation\Application;
use Stancl\Tenancy\Contracts\StorageDriver;
use Stancl\Tenancy\Exceptions\DomainsOccupiedByOtherTenantException;
use Stancl\Tenancy\Exceptions\TenantCouldNotBeIdentifiedException;
use Stancl\Tenancy\Exceptions\TenantDoesNotExistException;
use Stancl\Tenancy\Exceptions\TenantWithThisIdAlreadyExistsException;
use Stancl\Tenancy\Tenant;
@ -73,7 +74,13 @@ class RedisStorageDriver implements StorageDriver
public function findById(string $id): Tenant
{
return $this->makeTenant($this->redis->hgetall("tenants:$id"));
$data = $this->redis->hgetall("tenants:$id");
if (! $data) {
throw new TenantDoesNotExistException($id);
}
return $this->makeTenant($data);
}
public function getTenantIdByDomain(string $domain): ?string