From 405a137ca178802a4dcd60e954720679c0a8b831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20=C5=A0tancl?= Date: Mon, 29 Jun 2020 12:18:03 +0200 Subject: [PATCH] Better solution for tenant DB exception --- src/Bootstrappers/DatabaseTenancyBootstrapper.php | 10 +++++++--- .../TenantCouldNotBeIdentifiedByPathException.php | 2 +- ...enantCouldNotBeIdentifiedByRequestDataException.php | 2 +- .../TenantCouldNotBeIdentifiedOnDomainException.php | 2 +- tests/CachedTenantResolverTest.php | 2 -- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/Bootstrappers/DatabaseTenancyBootstrapper.php b/src/Bootstrappers/DatabaseTenancyBootstrapper.php index 2e3eaacf..a107fc0d 100644 --- a/src/Bootstrappers/DatabaseTenancyBootstrapper.php +++ b/src/Bootstrappers/DatabaseTenancyBootstrapper.php @@ -22,9 +22,13 @@ class DatabaseTenancyBootstrapper implements TenancyBootstrapper public function bootstrap(Tenant $tenant) { /** @var TenantWithDatabase $tenant */ - $database = $tenant->database()->getName(); - if (! $tenant->database()->manager()->databaseExists($database)) { - throw new TenantDatabaseDoesNotExistException($database); + + // Better debugging, but breaks cached lookup in prod + if (app()->environment('local')) { + $database = $tenant->database()->getName(); + if (! $tenant->database()->manager()->databaseExists($database)) { + throw new TenantDatabaseDoesNotExistException($database); + } } $this->database->connectToTenant($tenant); diff --git a/src/Exceptions/TenantCouldNotBeIdentifiedByPathException.php b/src/Exceptions/TenantCouldNotBeIdentifiedByPathException.php index ee870454..896c9323 100644 --- a/src/Exceptions/TenantCouldNotBeIdentifiedByPathException.php +++ b/src/Exceptions/TenantCouldNotBeIdentifiedByPathException.php @@ -21,7 +21,7 @@ class TenantCouldNotBeIdentifiedByPathException extends TenantCouldNotBeIdentifi return BaseSolution::create('Tenant could not be identified on this path') ->setSolutionDescription('Did you forget to create a tenant for this path?') ->setDocumentationLinks([ - 'Creating Tenants' => 'https://tenancyforlaravel.com/docs/v2/creating-tenants/', // todo update link for v3 + 'Creating Tenants' => 'https://tenancyforlaravel.com/docs/v3/tenants/', ]); } } diff --git a/src/Exceptions/TenantCouldNotBeIdentifiedByRequestDataException.php b/src/Exceptions/TenantCouldNotBeIdentifiedByRequestDataException.php index 685c6ef0..f0447d96 100644 --- a/src/Exceptions/TenantCouldNotBeIdentifiedByRequestDataException.php +++ b/src/Exceptions/TenantCouldNotBeIdentifiedByRequestDataException.php @@ -21,7 +21,7 @@ class TenantCouldNotBeIdentifiedByRequestDataException extends TenantCouldNotBeI return BaseSolution::create('Tenant could not be identified with this request data') ->setSolutionDescription('Did you forget to create a tenant with this id?') ->setDocumentationLinks([ - 'Creating Tenants' => 'https://tenancyforlaravel.com/docs/v2/creating-tenants/', // todo update link for v3 + 'Creating Tenants' => 'https://tenancyforlaravel.com/docs/v3/tenants/', ]); } } diff --git a/src/Exceptions/TenantCouldNotBeIdentifiedOnDomainException.php b/src/Exceptions/TenantCouldNotBeIdentifiedOnDomainException.php index 127407d9..66bc1db8 100644 --- a/src/Exceptions/TenantCouldNotBeIdentifiedOnDomainException.php +++ b/src/Exceptions/TenantCouldNotBeIdentifiedOnDomainException.php @@ -21,7 +21,7 @@ class TenantCouldNotBeIdentifiedOnDomainException extends TenantCouldNotBeIdenti return BaseSolution::create('Tenant could not be identified on this domain') ->setSolutionDescription('Did you forget to create a tenant for this domain?') ->setDocumentationLinks([ - 'Creating Tenants' => 'https://tenancyforlaravel.com/docs/v2/creating-tenants/', // todo update link for v3 + 'Creating Tenants' => 'https://tenancyforlaravel.com/docs/v3/tenants/', ]); } } diff --git a/tests/CachedTenantResolverTest.php b/tests/CachedTenantResolverTest.php index 40630405..e7eb52d3 100644 --- a/tests/CachedTenantResolverTest.php +++ b/tests/CachedTenantResolverTest.php @@ -109,6 +109,4 @@ class CachedTenantResolverTest extends TestCase $this->assertTrue($tenant->is(app(DomainTenantResolver::class)->resolve('bar'))); $this->assertNotEmpty(DB::getQueryLog()); // not empty } - - // todo2 at some point in the future, we could write invalidation tests for the other resolvers too }