/** * Class StorageService * * @package App\Core\Services */ class StorageService extends \App\Core\Classes\Service { private static $instance = null; private $storageConfigs = false; private $dbConnections = false; public $schema ; public $database_host ; public $database_port ; public $database_name ; public $database_user ; public $newConnection ; public function __construct($schema = 'api') { $dbConfigs = $this->storageConfigs()['databases']; $dbConfig = $dbConfigs[$schema]; $this->schema = $schema; $this->database_host = $dbConfig['database_host']; $this->database_port = $dbConfig['database_port']; $this->database_name = $dbConfig['database_name']; $this->database_user = $dbConfig['database_user']; $database_password = $dbConfig['database_password']; $dsn = "pgsql:host={$this->database_host};port={$this->database_port};dbname={$this->database_name};"; $pdoOpts = [ \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC ]; try { $this->newConnection = new \PDO($dsn, $this->database_user, $database_password, $pdoOpts); } catch (\Throwable $e) { /** * Add Exception error * * @date July 15th 2021 * @author David Raleche */ $error = 'MAPI CANT CONNECT DATABASE schema'.$schema .' DSN: '.$dsn .' USER: '.$this->database_user .' PASSWORD'.$database_password .' '.(string) $pdoOpts . ' ' .$e->getMessage(); HelperService::logger('critical', $error); throw new \Exception('Database connection issue '.$e->getMessage(), 500); } } /** * Storage Configs * * @return bool|mixed */ private function storageConfigs() { if ($this->storageConfigs === false) { $this->storageConfigs = yaml_parse_file(__DIR__ . '/../../config/storage.yaml'); } return $this->storageConfigs; } /** * Get Db connection * * @param string $schema * @param bool $allowShared * * @return bool|\PDO */ public function getConnection() : \PDO { return $this->newConnection; } public static function getInstance($schema) { if(!self::$instance ) { self::$instance = new StorageService($schema); } if ( self::$instance->schema !== $schema) { self::$instance = new StorageService($schema); } return self::$instance; }
Tag: postgres
Categories
PGadmin v4.14 released
Postgres PG admin has been released. Let’s see how it turns out @
