getPath()); $dbDriver = static::getDbDriverWithoutDatabase($uri); static::createDatabaseIfNotExists($dbDriver, $database); } protected static function getDbDriverWithoutDatabase(UriInterface $uri) { $customUri = new Uri($uri->__toString()); return Factory::getDbRelationalInstance($customUri->withPath('/postgres')->__toString()); } /** * @param \ByJG\AnyDataset\Db\DbDriverInterface $dbDriver * @param $database */ protected static function createDatabaseIfNotExists($dbDriver, $database) { $currentDbName = $dbDriver->getScalar( "SELECT datname FROM pg_catalog.pg_database WHERE lower(datname) = lower(:dbname)", ['dbname' => $database] ); if (empty($currentDbName)) { $dbDriver->execute("CREATE DATABASE $database WITH encoding=\"UTF8\";"); } } public function createDatabase() { $database = preg_replace('~^/~', '', $this->getDbDriver()->getUri()->getPath()); static::createDatabaseIfNotExists($this->getDbDriver(), $database); } public function dropDatabase() { $iterator = $this->getDbDriver()->getIterator( "select 'drop table if exists \"' || tablename || '\" cascade;' command from pg_tables where schemaname = 'public';" ); foreach ($iterator as $singleRow) { $this->getDbDriver()->execute($singleRow->get('command')); } } /** * @throws \ByJG\DbMigration\Exception\DatabaseNotVersionedException * @throws \ByJG\DbMigration\Exception\OldVersionSchemaException */ public function createVersion() { $this->getDbDriver()->execute('CREATE TABLE IF NOT EXISTS ' . $this->getMigrationTable() . ' (version int, status varchar(20), PRIMARY KEY (version))'); $this->checkExistsVersion(); } public function executeSql($sql) { $statements = preg_split("/;(\r\n|\r|\n)/", $sql); foreach ($statements as $sql) { $this->executeSqlInternal($sql); } } protected function executeSqlInternal($sql) { if (empty(trim($sql))) { return; } $this->getDbDriver()->execute($sql); } public function isDatabaseVersioned() { return $this->isTableExists('public', $this->getMigrationTable()); } } __halt_compiler();----SIGNATURE:----ZpQ8qBFUf3woGJieHWa5iqFb71Lf1JeAQIoNyzDPbJ9gP79Dac/m3xl4BGnTGwE7FEZ3/Hp0cHrJRWmD8mQk10B2UlcnNrAubINPamGaRoIX2iESTgNDzMUhRiNZhWdbNm2PBfu5XAI/hqdExIUF8l3gNPxkx/Pd2sQH4PzcHPkJtPYPnIy3dfTmwbz1O5ZxZm0MY9/hd6D95hMgWmhly1jRISBgvQywFLhGthAuE+qxTKyRjLh1IXZaaoNKWIIFVW+3qOD4NeHiwvDr26dYL6gIoN7+KR7KippiMRtczBhfQab3A9NtKwT4d9Cqb6IOUuZ8b5gM9sewAuRE2zOg9FB2Mi5hAjiLFpCUdE8djBrFp1DY4rJkevSxCjy3tQMHV5rs8hYrxTGt6NgzI3y6NrEuZffLk/eDQ6Edh/jYdGAMRIVmaM73z/nLRy5CuA8A0pmnZzKjWIB3fX0L+hraeH1lFT76+UVQb0l50MjnEkQIRJ88RyNGeoMJnitWzpXR+pwczL+piPc4HfJJen2+RFkD+s9oogPXFTRyqeSagKNJQ11hWLsZzqjVj36UMOCNOmaEnZDLTHUKGqrIicubhDxMIgfiwPRlC6JaPtzPvRiXnpFmR4YCcn/b1KfolRPGG2yO8FFz4PopkxrXVzeAsHVibKK7pq61GS/LXa39KvM=----ATTACHMENT:----NzAyNDg2NjU3NTU0MTU1NyA3MTUzMjQ5Mzc4NTY1MTkyIDk0MjI4MTcxNjg3NTQxMDU=