Files
database/common/Service/Database.php
2021-10-13 22:46:19 -03:00

36 lines
1.1 KiB
PHP

<?php
namespace ProVM\Common\Service;
use \Model;
class Database {
protected $settings;
public function __construct($settings) {
$this->settings = $settings;
}
public function load() {
foreach ($this->settings->databases as $name => $settings) {
$engine = $this->getEngine($settings);
$configs = ['connection_string' => $engine->dsn()];
if ($engine->hasLogin()) {
$configs['username'] = $settings->user->name;
$configs['password'] = $settings->user->password;
}
Model::configure($configs, null, $name);
}
if (isset($this->settings->short_names)) {
Model::$short_table_names = $this->settings->short_names;
}
}
protected function getEngine($settings): \ProVM\Common\Define\Engine {
$name = match($settings->engine) {
'mysql' => 'MySQL'
};
$class = implode("\\", [
'ProVM',
'Database',
$name
]);
return new $class($settings->host->name, $settings->name, $settings->host->port ?? null);
}
}