. */ namespace SP\Tests\Services\Install; use SP\Storage\Database\DatabaseConnectionData; use SP\Storage\Database\MySQLHandler; /** * Trait DbTestUtilTrait * * @package SP\Tests\Services\Install */ trait DbTestUtilTrait { /** * @param $database * * @throws \SP\Storage\Database\DatabaseException */ private function createDatabase($database) { $this->getConnection() ->query(sprintf('CREATE DATABASE `%s`', $database)); } /** * @return \PDO * @throws \SP\Storage\Database\DatabaseException */ private function getConnection() { $data = (new DatabaseConnectionData()) ->setDbHost(getenv('DB_SERVER')) ->setDbUser(getenv('DB_USER')) ->setDbPass(getenv('DB_PASS')); return (new MySQLHandler($data))->getConnectionSimple(); } /** * @param $user * @param $pass * @param $database * * @throws \SP\Storage\Database\DatabaseException */ private function createUser($user, $pass, $database, $host) { $query = 'GRANT ALL PRIVILEGES ON `%s`.* TO \'%s\'@\'%s\' IDENTIFIED BY \'%s\''; $conn = $this->getConnection(); $conn->query(sprintf($query, $database, $user, SELF_IP_ADDRESS, $pass)); $conn->query(sprintf($query, $database, $user, SELF_HOSTNAME, $pass)); $conn->query(sprintf($query, $database, $user, $host, $pass)); } /** * @param $user * @param $host */ private function dropUser($user, $host) { try { $this->getConnection() ->query(sprintf('DROP USER \'%s\'@\'%s\'', $user, $host)); } catch (\Exception $e) { processException($e); } } /** * @param $database * * @throws \SP\Storage\Database\DatabaseException */ private function dropDatabase($database) { $this->getConnection() ->query(sprintf('DROP DATABASE IF EXISTS `%s`', $database)); } }