<?php
// app/db.php
require_once __DIR__ . '/config.php';


function db(): PDO {
    static $pdo;
    if ($pdo instanceof PDO) {
        return $pdo;
    }

    $dsn = sprintf(
        'pgsql:host=%s;port=%s;dbname=%s;sslmode=%s',
        DB_HOST,
        DB_PORT,
        DB_NAME,
        DB_SSLMODE
    );

    $options = [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,

        // ✅ ESSENCIAL no Supabase Transaction Pooler (PgBouncer):
        PDO::ATTR_EMULATE_PREPARES   => true,

        // ✅ Evita reaproveitar conexão "estranha"
        PDO::ATTR_PERSISTENT         => false,
    ];

    try {
        $pdo = new PDO($dsn, DB_USER, DB_PASSWORD, $options);

        // opcional, mas ajuda a padronizar
        $pdo->exec("SET TIME ZONE 'America/Sao_Paulo'");
    } catch (Throwable $e) {
        die("Erro ao conectar no banco: " . $e->getMessage());
    }

    return $pdo;
}
