<?php

declare(strict_types=1);

namespace App;

use Doctrine\DBAL\Configuration;
use Doctrine\DBAL\DriverManager;
use Doctrine\DBAL\Connection;

class Database
{
    private static ?Connection $connection = null;

    /**
     * Ottiene l'istanza della connessione al database (Singleton).
     *
     * @return Connection
     * @throws \Doctrine\DBAL\Exception
     */
    public static function getConnection(): Connection
    {
        if (self::$connection === null) {
            // Carica la configurazione dal file
            $connectionParams = require __DIR__ . '/../config/database.php';

            // Crea la configurazione di Doctrine (opzionale, per ora vuota)
            $config = new Configuration();

            // Crea la connessione
            self::$connection = DriverManager::getConnection($connectionParams, $config);
        }

        return self::$connection;
    }

    // Impedisce la clonazione dell'istanza
    private function __clone() {}

    // Impedisce la deserializzazione dell'istanza
    public function __wakeup() {}
}