. */ namespace SP\Tests; use Exception; use PDO; use SP\Storage\Database\DatabaseConnectionData; use SP\Storage\Database\DatabaseException; /** * Trait DatabaseUtil * * @package SP\Tests */ class DatabaseUtil { /** * @param string $user * @param string $pass * @param string $database * @param string $host * * @throws DatabaseException */ public static function createUser($user, $pass, $database, $host) { $query = 'GRANT ALL PRIVILEGES ON `%s`.* TO \'%s\'@\'%s\' IDENTIFIED BY \'%s\''; $conn = self::getConnection(); $conn->query(sprintf($query, $database, $user, SELF_IP_ADDRESS, $pass)); // Long hostname returned on Travis CI if (getenv('TRAVIS') === false) { $conn->query(sprintf($query, $database, $user, SELF_HOSTNAME, $pass)); } $conn->query(sprintf($query, $database, $user, $host, $pass)); } /** * @return PDO * @throws DatabaseException */ public static function getConnection() { $data = (new DatabaseConnectionData()) ->setDbHost(getenv('DB_SERVER')) ->setDbUser(getenv('DB_USER')) ->setDbPass(getenv('DB_PASS')); return getDbHandler($data)->getConnectionSimple(); } /** * @param string $user * @param string $host */ public static function dropUser($user, $host) { try { self::getConnection() ->query(sprintf('DROP USER \'%s\'@\'%s\'', $user, $host)); } catch (Exception $e) { processException($e); } } /** * @param string $database * * @throws DatabaseException */ public static function dropDatabase($database) { self::getConnection() ->query(sprintf('DROP DATABASE IF EXISTS `%s`', $database)); } /** * @param string $database * * @throws DatabaseException */ public static function createDatabase($database) { self::getConnection() ->query(sprintf('CREATE DATABASE `%s`', $database)); } }