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

partial database config for template

This commit is contained in:
Abrar Ahmad 2023-01-05 14:23:46 +05:00
parent 2e3b8f7108
commit bc27a93eda
2 changed files with 33 additions and 3 deletions

View file

@ -109,12 +109,17 @@ class DatabaseConfig
}
if ($template = config('tenancy.database.template_tenant_connection')) {
return is_array($template) ? $template : config("database.connections.{$template}");
return is_array($template) ? array_merge($this->getCentralConnection(), $template) : config("database.connections.{$template}");
}
$template = config('tenancy.database.central_connection');
return $this->getCentralConnection();
}
return config("database.connections.{$template}");
protected function getCentralConnection(): array
{
$centralConnectionName = config('tenancy.database.central_connection');
return config("database.connections.{$centralConnectionName}");
}
public function getTenantHostConnectionName(): string

View file

@ -440,6 +440,31 @@ test('template tenant connection value can be connection name or connection arra
expect($manager->database()->getConfig('host'))->toBe('mysql2');
});
test('template tenant connection value can be partial database config', function () {
Event::listen(TenantCreated::class, JobPipeline::make([CreateDatabase::class])->send(function (TenantCreated $event) {
return $event->tenant;
})->toListener());
config([
'database.connections.central.url' => 'example.com',
'tenancy.database.template_tenant_connection' => [
'url' => null,
'host' => 'mysql2',
],
]);
$name = 'foo' . Str::random(8);
$tenant = Tenant::create([
'tenancy_db_name' => $name,
]);
/** @var MySQLDatabaseManager $manager */
$manager = $tenant->database()->manager();
expect($manager->databaseExists($name))->toBeTrue();
expect($manager->database()->getConfig('host'))->toBe('mysql2');
expect($manager->database()->getConfig('url'))->toBeNull();
});
// Datasets
dataset('database_managers', [
['mysql', MySQLDatabaseManager::class],