<?php

use Illuminate\Support\Str;

$dbConnection = env('DB_CONNECTION', 'mysql');
$dbConnection = in_array($dbConnection, ['mysql', 'mariadb']) ? $dbConnection : 'mysql';

return [
    
    /*
    |--------------------------------------------------------------------------
    | Default Database Connection Name
    |--------------------------------------------------------------------------
    |
    | Here you may specify which of the database connections below you wish
    | to use as your default connection for database operations. This is
    | the connection which will be utilized unless another connection
    | is explicitly specified when you execute a query / statement.
    |
    */
    
    'default' => $dbConnection,
    
    /*
    |--------------------------------------------------------------------------
    | Database Connections
    |--------------------------------------------------------------------------
    |
    | Below are all of the database connections defined for your application.
    | An example configuration is provided for each database system which
    | is supported by Laravel. You're free to add / remove connections.
    |
    */
    
    'connections' => [
        
        'mysql' => [
            'driver'         => 'mysql',
			'url'            => env('DB_URL'),
            'host'           => env('DB_HOST', '127.0.0.1'),
            'port'           => env('DB_PORT', '3306'),
            'database'       => env('DB_DATABASE'),
            'username'       => env('DB_USERNAME'),
            'password'       => env('DB_PASSWORD'),
            'unix_socket'    => env('DB_SOCKET', ''),
            'charset'        => env('DB_CHARSET', 'utf8mb4'),
            'collation'      => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
            'prefix'         => env('DB_TABLES_PREFIX', ''),
			'prefix_indexes' => env('DB_PREFIX_INDEXES', true),
            'strict'         => env('DB_MODE_STRICT', false),
			'engine'         => env('DB_ENGINE', 'InnoDB'),
			'options'        => extension_loaded('pdo_mysql')
				? array_filter([
					\PDO::MYSQL_ATTR_SSL_CA     => env('MYSQL_ATTR_SSL_CA'),
					\PDO::ATTR_EMULATE_PREPARES => true,
				])
				: [],
			'dump'           => [
				'dump_binary_path' => env('DB_DUMP_BINARY_PATH', ''), // only the path, so without 'mysqldump' or 'pg_dump'.
				'use_single_transaction',                             // perform dump using a single transaction.
				'timeout'          => 60 * 10,                        // 10 minute timeout
			]
        ],
		
        'mariadb' => [
	        'driver'         => 'mariadb',
	        'url'            => env('DB_URL'),
	        'host'           => env('DB_HOST', '127.0.0.1'),
	        'port'           => env('DB_PORT', '3306'),
	        'database'       => env('DB_DATABASE'),
	        'username'       => env('DB_USERNAME'),
	        'password'       => env('DB_PASSWORD'),
	        'unix_socket'    => env('DB_SOCKET', ''),
	        'charset'        => env('DB_CHARSET', 'utf8mb4'),
	        'collation'      => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
	        'prefix'         => env('DB_TABLES_PREFIX', ''),
	        'prefix_indexes' => env('DB_PREFIX_INDEXES', true),
	        'strict'         => env('DB_MODE_STRICT', false),
	        'engine'         => env('DB_ENGINE'),
	        'options'        => extension_loaded('pdo_mysql')
		        ? array_filter([
		            \PDO::MYSQL_ATTR_SSL_CA     => env('MYSQL_ATTR_SSL_CA'),
		            \PDO::ATTR_EMULATE_PREPARES => true,
	        ]) : [],
	        'dump'           => [
		        'dump_binary_path' => env('DB_DUMP_BINARY_PATH', ''), // only the path, so without 'mysqldump' or 'pg_dump'.
		        'use_single_transaction',                             // perform dump using a single transaction.
		        'timeout'          => 60 * 10,                        // 10 minute timeout
	        ]
        ],
    	
    ],
    
    /*
    |--------------------------------------------------------------------------
    | Migration Repository Table
    |--------------------------------------------------------------------------
    |
    | This table keeps track of all the migrations that have already run for
    | your application. Using this information, we can determine which of
    | the migrations on disk haven't actually been run on the database.
    |
    */
	
    'migrations' => [
	    'table'                  => 'migrations',
	    'update_date_on_publish' => true,
    ],
	
	/*
	|--------------------------------------------------------------------------
	| Redis Databases
	|--------------------------------------------------------------------------
	|
	| Redis is an open source, fast, and advanced key-value store that also
    | provides a richer body of commands than a typical key-value system
    | such as Memcached. You may define your connection settings here.
	|
	*/
	
	'redis' => [
		
		'client' => env('REDIS_CLIENT', 'predis'), // phpredis, predis
		
		'options' => [
			'cluster' => env('REDIS_CLUSTER', 'redis'),
			'prefix'  => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
		],
		
		'default' => [
			'scheme'   => env('REDIS_SCHEME', 'tcp'), // tcp, tls
			'url'      => env('REDIS_URL'),
			'host'     => env('REDIS_HOST', '127.0.0.1'),
			'username' => env('REDIS_USERNAME'),
			'password' => env('REDIS_PASSWORD'),
			'port'     => env('REDIS_PORT', '6379'),
			'database' => env('REDIS_DB', '0'),
		],
		
		'cache' => [
			'scheme'   => env('REDIS_SCHEME', 'tcp'), // tcp, tls
			'url'      => env('REDIS_URL'),
			'host'     => env('REDIS_HOST', '127.0.0.1'),
			'username' => env('REDIS_USERNAME'),
			'password' => env('REDIS_PASSWORD'),
			'port'     => env('REDIS_PORT', '6379'),
			'database' => env('REDIS_CACHE_DB', '1'),
		],
		
	],

];
