Carpeta database
This commit is contained in:
@@ -0,0 +1,59 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// Establece coneccion a base de datos (Singleton) usando el motor pgsql (postgreSQL) mediante la interfaz PDO
|
||||||
|
|
||||||
|
class Database {
|
||||||
|
|
||||||
|
// Conección única reutilizable
|
||||||
|
|
||||||
|
private static $connection = null;
|
||||||
|
|
||||||
|
public static function getConnection() {
|
||||||
|
|
||||||
|
// Si ya existe una conexión activa, se reutiliza
|
||||||
|
|
||||||
|
if (self::$connection !== null) {
|
||||||
|
return self::$connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Obtiene credenciales desde variables de entorno, se definen valores por defecto en caso de que no existan
|
||||||
|
|
||||||
|
$host = $_ENV['DB_HOST'] ?? 'db';
|
||||||
|
$port = $_ENV['DB_PORT'] ?? '5432';
|
||||||
|
$db = $_ENV['DB_NAME'] ?? 'bytecenter';
|
||||||
|
$user = $_ENV['DB_USER'] ?? 'admin';
|
||||||
|
$pass = $_ENV['DB_PASSWORD'] ?? 'admin_bytepassword';
|
||||||
|
|
||||||
|
// DSN (Data Source Name):
|
||||||
|
// Define el tipo de base de datos (pgsql) y los parámetros de conexión
|
||||||
|
// Es la "cadena de conexión" que PDO necesita para saber a dónde conectarse
|
||||||
|
|
||||||
|
$dsn = "pgsql:host=$host;port=$port;dbname=$db";
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
// Se crea la instancia de PDO (conección a la BD)
|
||||||
|
|
||||||
|
self::$connection = new PDO($dsn, $user, $pass, [
|
||||||
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||||
|
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||||
|
]);
|
||||||
|
|
||||||
|
return self::$connection; // Retorna la conección lista para usar
|
||||||
|
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
|
||||||
|
// Log interno
|
||||||
|
|
||||||
|
error_log($e->getMessage());
|
||||||
|
|
||||||
|
// Muestra mensaje amigable
|
||||||
|
|
||||||
|
die("Ocurrió un error inesperado. Por favor, comuníquese con un administrador o intente denuevo mas tarde.");
|
||||||
|
|
||||||
|
// Mensaje para desarrollo -->
|
||||||
|
|
||||||
|
// die("Error de conexión a la base de datos: " . $e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user