diff --git a/common/Define/Engine.php b/common/Define/Engine.php new file mode 100644 index 0000000..2369669 --- /dev/null +++ b/common/Define/Engine.php @@ -0,0 +1,8 @@ +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); + } +} \ No newline at end of file