session()->put('env.DB_CONNECTION', $request->db_connection); $request->session()->put('env.DB_HOST', $request->db_host); $request->session()->put('env.DB_PORT', $request->db_port); $request->session()->put('env.DB_DATABASE', $request->db_database); $request->session()->put('env.DB_USERNAME', $request->db_username); $request->session()->put('env.DB_PASSWORD', $request->db_password); if ($request->db_connection == 'mysql') { return $this->testMySql(); } return response()->json([ 'Error' => 'DB Type not Supported for testing', 'State' => '999', ]); } public function testMySql() { $db_type = session('env.DB_CONNECTION'); $db_host = session('env.DB_HOST'); $db_name = session('env.DB_DATABASE'); $db_user = session('env.DB_USERNAME'); $db_pass = session('env.DB_PASSWORD'); $db_port = session('env.DB_PORT'); if (! $db_name) { return response()->json([ 'Error' => 'No Database', 'State' => '999', ]); } if (! $db_user) { return response()->json([ 'Error' => 'No Username', 'State' => '999', ]); } if (! $db_port) { return response()->json([ 'Error' => 'No Port', 'State' => '999', ]); } if (! $db_host) { return response()->json([ 'Error' => 'No Host', 'State' => '999', ]); } try { $db = new PDO($db_type.':host='.$db_host.';port='.$db_port.';dbname='.$db_name, $db_user, $db_pass, [ PDO::ATTR_TIMEOUT => '5', PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_LOCAL_INFILE => true, ]); } catch (PDOException $e) { if ($e->getCode() == '1049') { $db = new PDO($db_type.':host='.$db_host.';port='.$db_port.';dbname='.'', $db_user, $db_pass, [ PDO::ATTR_TIMEOUT => '5', PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_LOCAL_INFILE => true, ]); $db->query("CREATE DATABASE IF NOT EXISTS $db_name"); return response()->json([ 'State' => '200', 'Success' => 'Database '.$db_name.' created', ]); } return response()->json([ 'Error' => $e->getMessage(), 'State' => $e->getCode(), ]); } return response()->json([ 'State' => '200', 'Success' => 'Seems okay', ]); } }