Hay que rediseñar la clase que maneja la base de datos para implementarla con PDO, soportar SQLite y permitir conectar a varias bases de datos.
La nueva clase debe ser Core/DB
y debe crear el objeto PDO para conectar a la base de datos y disponer de una serie de métodos públicos para poder interactuar con ella.
if (DB::connected()) {
// está conectada
$products = DB::select('select * from productos');
}
Hay que usar la función Tools::config()
para leer las constantes de configuración. Esta función permite leer del config.php o de variables de entorno.
Algunos proveedores de base de datos como neon.tech, planetscale y aws se configuran con una url, en lugar de las constantes. Ejemplo:
driver://username:password@host:port/database?options
Necesitamos permitir configurar la base de datos así, de alguna forma, en el config. Por ejemplo con una constante FS_DB_URL.
Este motor de base de datos será el elegido para usar en Windows, evitando los problemas de corrupción que se producen con MySQL ahora mismo. Hay que añadir el soporte en el Installer y en la clase DB.
La clase debe usar la base de datos configurada, pero debe soportar conectar a otras bases de datos, como en este ejemplo:
$params = ['id' => 'nueva', 'type' => 'mysql', 'host' => ...];
// establecemos la conexión a otra base de datos
$nueva = DB::newConnection($params);
if ($nueva->connect() === false) {
// no se ha podido conectar
return;
}
// hacemos una consulta a la nueva base de datos.
$families = $nueva->select('select * from familias');
// otra forma de hacer la consulta
$families2 = DB::connection('nueva')->select('select * from familias');
// la misma consulta, pero a la base de datos de FacturaScripts
$families3 = DB::select('select * from familias');
Esta tarea fue aprobada el 01-10-2024 y está pendiente para comenzar el desarrollo el 12-02-2025.