Updated database & Implemented Docker support. (unfinished)

This commit is contained in:
netkas 2024-12-30 13:58:47 -05:00
parent c380556255
commit 85a81784f9
25 changed files with 752 additions and 105 deletions

View file

@ -1,39 +1,41 @@
<?php
namespace Socialbox\Classes;
namespace Socialbox\Classes;
use PDO;
use PDOException;
use Socialbox\Exceptions\DatabaseOperationException;
use PDO;
use PDOException;
use Socialbox\Classes\Configuration\DatabaseConfiguration;
use Socialbox\Exceptions\DatabaseOperationException;
class Database
{
private static ?PDO $instance = null;
/**
* @return PDO
* @throws DatabaseOperationException
*/
public static function getConnection(): PDO
class Database
{
if (self::$instance === null)
{
try
{
$dsn = 'mysql:host=127.0.0.1;dbname=socialbox;port=3306;charset=utf8mb4';
self::$instance = new PDO($dsn, 'root', 'root');
private static ?PDO $instance = null;
// Set some common PDO attributes for better error handling
self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
self::$instance->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}
catch (PDOException $e)
/**
* @return PDO
* @throws DatabaseOperationException
*/
public static function getConnection(): PDO
{
if (self::$instance === null)
{
throw new DatabaseOperationException('Failed to connect to the database', $e);
$dsn = Configuration::getDatabaseConfiguration()->getDsn();
try
{
self::$instance = new PDO($dsn, Configuration::getDatabaseConfiguration()->getUsername(), Configuration::getDatabaseConfiguration()->getPassword());
// Set some common PDO attributes for better error handling
self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
self::$instance->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}
catch (PDOException $e)
{
throw new DatabaseOperationException('Failed to connect to the database using ' . $dsn, $e);
}
}
return self::$instance;
}
return self::$instance;
}
}
}