<?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);
 
    }
 
}
 
 |