mirror of
https://github.com/archtechx/tenancy.git
synced 2025-12-15 17:04:03 +00:00
* Add and test Migrate command's skip-failing option * Improve naming * Move migration event dispatching inside try block * Change test name * Fix skip-failing test * Use QueryException instead of Exception * Correct TenantDatabaseDoesNotExistException import * Correct test * Check for the the testing env in DB bootstrapper * Correct the Migrate command * Fix code style (php-cs-fixer) * add docs todo * Add QueryException to the Migrat command try/catch * Return status codes in Migrate * Fix code style (php-cs-fixer) * Add test for not stopping tenants:migrate after the first failure * Update Migrate command * Fix code style (php-cs-fixer) * Fix code style (php-cs-fixer) * Use `getTenants()` * Use withtenantDatabases where needed * Add withTenantDatabases to test --------- Co-authored-by: PHP CS Fixer <phpcsfixer@example.com> Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
42 lines
1.3 KiB
PHP
42 lines
1.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Stancl\Tenancy\Bootstrappers;
|
|
|
|
use Stancl\Tenancy\Contracts\TenancyBootstrapper;
|
|
use Stancl\Tenancy\Contracts\Tenant;
|
|
use Stancl\Tenancy\Database\Contracts\TenantWithDatabase;
|
|
use Stancl\Tenancy\Database\DatabaseManager;
|
|
use Stancl\Tenancy\Database\Exceptions\TenantDatabaseDoesNotExistException;
|
|
|
|
class DatabaseTenancyBootstrapper implements TenancyBootstrapper
|
|
{
|
|
/** @var DatabaseManager */
|
|
protected $database;
|
|
|
|
public function __construct(DatabaseManager $database)
|
|
{
|
|
$this->database = $database;
|
|
}
|
|
|
|
public function bootstrap(Tenant $tenant): void
|
|
{
|
|
/** @var TenantWithDatabase $tenant */
|
|
|
|
// Better debugging, but breaks cached lookup in prod
|
|
if (app()->environment('local') || app()->environment('testing')) { // todo@docs mention this change in v4 upgrade guide https://github.com/archtechx/tenancy/pull/945#issuecomment-1268206149
|
|
$database = $tenant->database()->getName();
|
|
if (! $tenant->database()->manager()->databaseExists($database)) {
|
|
throw new TenantDatabaseDoesNotExistException($database);
|
|
}
|
|
}
|
|
|
|
$this->database->connectToTenant($tenant);
|
|
}
|
|
|
|
public function revert(): void
|
|
{
|
|
$this->database->reconnectToCentral();
|
|
}
|
|
}
|