Bolt\Config::parseDatabase PHP Method

parseDatabase() protected method

Parse and fine-tune the database configuration.
protected parseDatabase ( array $options ) : array
$options array
return array
    protected function parseDatabase(array $options)
    {
        // Make sure prefix ends with underscore
        if (substr($options['prefix'], strlen($options['prefix']) - 1) !== '_') {
            $options['prefix'] .= '_';
        }
        // Parse master connection parameters
        $master = $this->parseConnectionParams($options);
        // Merge master connection into options
        $options = array_replace($options, $master);
        // Add platform specific random functions
        $driver = Str::replaceFirst('pdo_', '', $options['driver']);
        if ($driver === 'sqlite') {
            $options['driver'] = 'pdo_sqlite';
            $options['randomfunction'] = 'RANDOM()';
        } elseif (in_array($driver, ['mysql', 'mysqli'])) {
            $options['driver'] = 'pdo_mysql';
            $options['randomfunction'] = 'RAND()';
        } elseif (in_array($driver, ['pgsql', 'postgres', 'postgresql'])) {
            $options['driver'] = 'pdo_pgsql';
            $options['randomfunction'] = 'RANDOM()';
        }
        // Specify the wrapper class for the connection
        $options['wrapperClass'] = '\\Bolt\\Storage\\Database\\Connection';
        // Parse SQLite separately since it has to figure out database path
        if ($driver === 'sqlite') {
            return $this->parseSqliteOptions($options);
        }
        // If no slaves return with single connection
        if (empty($options['slaves'])) {
            return $options;
        }
        // Specify we want a master slave connection
        $options['wrapperClass'] = '\\Bolt\\Storage\\Database\\MasterSlaveConnection';
        // Add master connection where MasterSlaveConnection looks for it.
        $options['master'] = $master;
        // Parse each slave connection parameters
        foreach ($options['slaves'] as $name => $slave) {
            $options['slaves'][$name] = $this->parseConnectionParams($slave, $master);
        }
        return $options;
    }