<?php
// classes/Database.php - Database connection wrapper using Singleton pattern

class Database {
    private static $instance = null;
    private $pdo;

    // Database configurations
    private const DB_HOST = 'localhost';
    private const DB_NAME = 'shop69319090044';
    private const DB_USER = 'u69319090044';
    private const DB_PASS = '@6944';
    private const DB_CHAR = 'utf8mb4';

    private function __construct() {
        $options = [
            PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_EMULATE_PREPARES   => false,
        ];

        try {
            $dsn = "mysql:host=" . self::DB_HOST . ";dbname=" . self::DB_NAME . ";charset=" . self::DB_CHAR;
            $this->pdo = new PDO($dsn, self::DB_USER, self::DB_PASS, $options);
        } catch (PDOException $e) {
            try {
                // Fallback for local development (XAMPP default)
                $this->pdo = new PDO("mysql:host=127.0.0.1;dbname=online_shop;charset=utf8mb4", 'root', '', $options);
            } catch (PDOException $e2) {
                throw new Exception("Database connection failed: " . $e->getMessage());
            }
        }
    }

    // Prevent cloning and unserialization
    private function __clone() {}
    public function __wakeup() {}

    public static function getInstance() {
        if (self::$instance === null) {
            self::$instance = new self();
        }
        return self::$instance;
    }

    public function getConnection() {
        return $this->pdo;
    }
}
