From 68122d14311cb8ff61bcb18b7c293cdef5cbafef Mon Sep 17 00:00:00 2001 From: Aldarien Date: Wed, 13 Oct 2021 22:46:19 -0300 Subject: [PATCH] Common --- common/Define/Engine.php | 8 ++++++++ common/Service/Database.php | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 common/Define/Engine.php create mode 100644 common/Service/Database.php 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