<?php
/**
 * NEXUS Commerce - Database Connection Manager (db.php)
 */

require_once __DIR__ . '/config.php';

$pdo = null;

try {
    // Attempt MySQL Connection
    $dsn = "mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=" . DB_CHARSET;
    $options = [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false,
    ];

    $pdo = new PDO($dsn, DB_USER, DB_PASS, $options);

} catch (PDOException $e) {
    // Fallback to SQLite if MySQL fails (e.g. MySQL server not running or DB not created yet)
    try {
        if (file_exists(SQLITE_PATH)) {
            $pdo = new PDO("sqlite:" . SQLITE_PATH);
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
        } else {
            throw $e;
        }
    } catch (Exception $fallbackErr) {
        die("Database Connection Error: " . $e->getMessage());
    }
}

// Alias variables for flexibility across codebase
$db = $pdo;
$conn = $pdo;

/**
 * Helper function to return active PDO database instance
 * @return PDO
 */
function getDB() {
    global $pdo;
    return $pdo;
}
