diff --git a/src/Bootstrappers/DatabaseTenancyBootstrapper.php b/src/Bootstrappers/DatabaseTenancyBootstrapper.php index 54cd34f6..2e3eaacf 100644 --- a/src/Bootstrappers/DatabaseTenancyBootstrapper.php +++ b/src/Bootstrappers/DatabaseTenancyBootstrapper.php @@ -7,6 +7,7 @@ namespace Stancl\Tenancy\Bootstrappers; use Stancl\Tenancy\Contracts\TenancyBootstrapper; use Stancl\Tenancy\Contracts\Tenant; use Stancl\Tenancy\Database\DatabaseManager; +use Stancl\Tenancy\Exceptions\TenantDatabaseDoesNotExistException; class DatabaseTenancyBootstrapper implements TenancyBootstrapper { @@ -20,6 +21,12 @@ 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); + } + $this->database->connectToTenant($tenant); } diff --git a/src/Exceptions/TenantCouldNotBeIdentifiedByPathException.php b/src/Exceptions/TenantCouldNotBeIdentifiedByPathException.php index 896c9323..ee870454 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/v3/tenants/', + 'Creating Tenants' => 'https://tenancyforlaravel.com/docs/v2/creating-tenants/', // todo update link for v3 ]); } } diff --git a/src/Exceptions/TenantCouldNotBeIdentifiedByRequestDataException.php b/src/Exceptions/TenantCouldNotBeIdentifiedByRequestDataException.php index f0447d96..685c6ef0 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/v3/tenants/', + 'Creating Tenants' => 'https://tenancyforlaravel.com/docs/v2/creating-tenants/', // todo update link for v3 ]); } } diff --git a/src/Exceptions/TenantCouldNotBeIdentifiedOnDomainException.php b/src/Exceptions/TenantCouldNotBeIdentifiedOnDomainException.php index 66bc1db8..127407d9 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/v3/tenants/', + 'Creating Tenants' => 'https://tenancyforlaravel.com/docs/v2/creating-tenants/', // todo update link for v3 ]); } } diff --git a/src/Exceptions/TenantDatabaseDoesNotExistException.php b/src/Exceptions/TenantDatabaseDoesNotExistException.php new file mode 100644 index 00000000..2f6df0f9 --- /dev/null +++ b/src/Exceptions/TenantDatabaseDoesNotExistException.php @@ -0,0 +1,15 @@ +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 }