<?php
/**
 * =====================================================================
 * CAE - Conexão com o banco de dados (PDO)
 * ---------------------------------------------------------------------
 * Uso:
 *     require_once __DIR__ . '/config/db.php';
 *     $pdo = cae_db();
 *
 * O PDO é criado em modo singleton: a conexão é aberta uma única vez
 * por requisição e reaproveitada nas chamadas seguintes.
 * =====================================================================
 */

declare(strict_types=1);

function cae_db(): PDO
{
    static $pdo = null;

    if ($pdo instanceof PDO) {
        return $pdo;
    }

    $cfg = require __DIR__ . '/config.php';

    $dsn = sprintf(
        'mysql:host=%s;port=%d;dbname=%s;charset=%s',
        $cfg['host'],
        $cfg['port'],
        $cfg['database'],
        $cfg['charset']
    );

    $options = [
        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 {$cfg['charset']} COLLATE utf8mb4_unicode_ci",
    ];

    $pdo = new PDO($dsn, $cfg['username'], $cfg['password'], $options);

    return $pdo;
}
