<?php
/** AURA FARMING — Conexão PDO/MySQL */

if (!function_exists('af_env')) {
    require_once __DIR__ . '/config.php';
}

if (!defined('DB_HOST'))    define('DB_HOST', (string)af_env('DB_HOST', 'localhost'));
if (!defined('DB_PORT'))    define('DB_PORT', (string)af_env('DB_PORT', '3306'));
if (!defined('DB_NAME'))    define('DB_NAME', (string)af_env('DB_NAME', 'aura_farming'));
if (!defined('DB_USER'))    define('DB_USER', (string)af_env('DB_USER', 'root'));
if (!defined('DB_PASS'))    define('DB_PASS', (string)af_env('DB_PASS', ''));
if (!defined('DB_CHARSET')) define('DB_CHARSET', 'utf8mb4');

try {
    $dsn = sprintf('mysql:host=%s;port=%s;dbname=%s;charset=%s', DB_HOST, DB_PORT, DB_NAME, DB_CHARSET);
    $pdo = new PDO($dsn, DB_USER, DB_PASS, [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false,
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci",
    ]);

    // Sincroniza o fuso da conexão MySQL com o PHP.
    // Isso evita a partida de 3 minutos ser interpretada como já finalizada.
    $appTimezone = defined('APP_TIMEZONE') ? APP_TIMEZONE : date_default_timezone_get();
    try {
        $timezone = new DateTimeZone($appTimezone);
        $offset = (new DateTimeImmutable('now', $timezone))->format('P');
        $pdo->exec('SET time_zone = ' . $pdo->quote($offset));
    } catch (Throwable $timezoneError) {
        error_log('[AURA-TIMEZONE] ' . $timezoneError->getMessage());
    }
} catch (PDOException $e) {
    error_log('[AURA-DB] ' . $e->getMessage());
    http_response_code(503);
    $detail = (defined('APP_DEBUG') && APP_DEBUG) ? '<pre>' . htmlspecialchars($e->getMessage()) . '</pre>' : '';
    die('<h1 style="font-family:sans-serif;color:#ff4444">Erro ao conectar ao banco de dados.</h1>' . $detail);
}
