| 
<?php
 if (!function_exists('parseSqlQuery')) {
 /**
 * Get raw Sql
 *
 * @example parseSqlQuery(User::where('name', 'foo'));
 * @param \Illuminate\Database\Eloquent\Builder $builder
 * @return string
 */
 function parseSqlQuery(Builder $builder)
 {
 $sql = $builder->toSql();
 
 foreach ($builder->getBindings() as $binding) {
 $value = is_numeric($binding) ? $binding : "'" . $binding . "'";
 $sql = preg_replace('/\?/', $value, $sql, 1);
 }
 
 return $sql;
 }
 }
 
 if (!function_exists('pdo_make_factory')) {
 /**
 * Create PDO Factory
 *
 * @param array|string|null $config
 * @return \Illuminate\Database\Connection
 */
 function pdo_make_factory($config = null)
 {
 $sid = 'api_pdo_factory.instance';
 
 if (is_null($factory = session($sid))) {
 
 $cfg_name = \DB::getDefaultConnection();
 $cfg_env = collect(config('database.connections.' . $cfg_name, []));
 
 if ($config && is_string($config)) {
 $cfg_name = $config;
 }
 
 if ($config && is_array($config)) {
 $cfg_env = $cfg_env->merge($config);
 }
 
 session($sid, $factory = app('db.factory')->make(['database' => null, 'strict' => false] + $cfg_env->all()));
 }
 
 return $factory;
 }
 }
 
 if (!function_exists('pdo_statement')) {
 /**
 * Run a PDO Statement
 *
 * @param string $statement
 * @param array|string|null $config
 * @return mixed
 * @throws \Exception
 */
 function pdo_statement($statement, $config = null)
 {
 if (!$factory = pdo_make_factory($config)) {
 throw new \Exception('Invalid connection factory.');
 }
 
 return $factory->select($statement);
 }
 }
 
 if (!function_exists('db_exists')) {
 /**
 * Check if database exists
 *
 * @param string $name
 * @return bool
 * @throws \Exception
 */
 function db_exists($name)
 {
 if ($name && !empty($name)) {
 $statement = "SELECT IF('{$name}' IN(SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA), 1, 0) as found";
 $result = pdo_statement($statement);
 return $result[0]->found === 1;
 } else {
 throw new \Exception("Invalid Database Name `{$name}`");
 }
 }
 }
 
 if (!function_exists('prop')) {
 /**
 * Alternative to Collection
 *
 * @param $data
 * @return ObjectProp
 */
 function prop($data)
 {
 return new ObjectProp($data);
 }
 }
 |