Add sqlite support.

This commit is contained in:
kj
2022-08-04 05:30:22 -04:00
parent 08d92a2b81
commit 2411704662
3 changed files with 92 additions and 77 deletions

View File

@ -3,8 +3,11 @@
* Database - DuckBrain
*
* Clase diseñada para crear y devolver una única instancia PDO (database).
* Depende de manera forzada de que estén definidas las constantes:
* DB_TYPE, DB_NAME, DB_HOST, DB_USER. DB_PASS
* Hace uso de las siguientes constantes:
* DB_TYPE, DB_NAME, DB_HOST, DB_USER, DB_PASS
*
* Si DB_TYPE es sqlite, usará DB_NAME como el nombre del archivo sqlite.
* Además DB_USER y DB_PASS, no será necesariop que estén definidos.
*
* @author KJ
* @website https://kj2.me
@ -29,7 +32,14 @@ class Database extends PDO {
*/
static public function getInstance() : PDO {
if (is_null(self::$db)) {
$dsn = DB_TYPE.':dbname='.DB_NAME.';host='.DB_HOST;
if (DB_TYPE == 'sqlite') {
$dsn = DB_TYPE .':'. DB_NAME;
!defined('DB_USER') && define('DB_USER', '');
!defined('DB_PASS') && define('DB_PASS', '');
} else
$dsn = DB_TYPE.':dbname='.DB_NAME.';host='.DB_HOST;
try {
self::$db = new PDO($dsn, DB_USER, DB_PASS);
} catch (PDOException $e) {
@ -38,6 +48,7 @@ class Database extends PDO {
'Error at connect to database: ' . $e->getMessage()
);
}
self::$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
self::$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
}