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

@ -22,74 +22,74 @@ En la siguiente tabla se encuentra la lista de estados de los SGBD que he probad
+ *not supported* como no soportado por el SGBD.
+ *fixed* para aquello que no existe, pero la librería lo traduce a un equivalente.
|------------------+---------------+---------+------------|
| method | MySQL/MariaDB | sqlite3 | postgreSQL |
|------------------+---------------+---------+------------|
| db | ok | | |
|------------------+---------------+---------+------------|
| query | ok | | |
|------------------+---------------+---------+------------|
| resetQuery | ok | | |
|------------------+---------------+---------+------------|
| buildQuery | ok | | |
|------------------+---------------+---------+------------|
| getInstance | ok | | |
|------------------+---------------+---------+------------|
| getVars | ok | | |
|------------------+---------------+---------+------------|
| className | ok | | |
|------------------+---------------+---------+------------|
| table | ok | | |
|------------------+---------------+---------+------------|
| update | ok | | |
|------------------+---------------+---------+------------|
| beginTransaction | ok | | |
|------------------+---------------+---------+------------|
| rollBack | ok | | |
|------------------+---------------+---------+------------|
| commit | ok | | |
|------------------+---------------+---------+------------|
| add | ok | | |
|------------------+---------------+---------+------------|
| save | ok | | |
|------------------+---------------+---------+------------|
| delete | ok | | |
|------------------+---------------+---------+------------|
| select | ok | | |
|------------------+---------------+---------+------------|
| from | ok | | |
|------------------+---------------+---------+------------|
| where | ok | | |
|------------------+---------------+---------+------------|
| where_in | ok | | |
|------------------+---------------+---------+------------|
| leftJoin | ok | | |
|------------------+---------------+---------+------------|
| rightJoin | ok | | |
|------------------+---------------+---------+------------|
| innerJoin | ok | | |
|------------------+---------------+---------+------------|
| and | ok | | |
|------------------+---------------+---------+------------|
| or | ok | | |
|------------------+---------------+---------+------------|
| groupBy | ok | | |
|------------------+---------------+---------+------------|
| limit | ok | | |
|------------------+---------------+---------+------------|
| orderBy | ok | | |
|------------------+---------------+---------+------------|
| count | ok | | |
|------------------+---------------+---------+------------|
| getById | ok | | |
|------------------+---------------+---------+------------|
| search | ok | | |
|------------------+---------------+---------+------------|
| get | ok | | |
|------------------+---------------+---------+------------|
| getFirst | ok | | |
|------------------+---------------+---------+------------|
| all | ok | | |
|------------------+---------------+---------+------------|
| setNull | ok | | |
|------------------+---------------+---------+------------|
|------------------+---------------+---------------+------------|
| method | MySQL/MariaDB | sqlite3 | postgreSQL |
|------------------+---------------+---------------+------------|
| db | ok | ok | |
|------------------+---------------+---------------+------------|
| query | ok | ok | |
|------------------+---------------+---------------+------------|
| resetQuery | ok | ok | |
|------------------+---------------+---------------+------------|
| buildQuery | ok | ok | |
|------------------+---------------+---------------+------------|
| getInstance | ok | ok | |
|------------------+---------------+---------------+------------|
| getVars | ok | ok | |
|------------------+---------------+---------------+------------|
| className | ok | ok | |
|------------------+---------------+---------------+------------|
| table | ok | ok | |
|------------------+---------------+---------------+------------|
| update | ok | ok | |
|------------------+---------------+---------------+------------|
| beginTransaction | ok | ok | |
|------------------+---------------+---------------+------------|
| rollBack | ok | ok | |
|------------------+---------------+---------------+------------|
| commit | ok | ok | |
|------------------+---------------+---------------+------------|
| add | ok | ok | |
|------------------+---------------+---------------+------------|
| save | ok | ok | |
|------------------+---------------+---------------+------------|
| delete | ok | ok | |
|------------------+---------------+---------------+------------|
| select | ok | ok | |
|------------------+---------------+---------------+------------|
| from | ok | ok | |
|------------------+---------------+---------------+------------|
| where | ok | ok | |
|------------------+---------------+---------------+------------|
| where_in | ok | ok | |
|------------------+---------------+---------------+------------|
| leftJoin | ok | ok | |
|------------------+---------------+---------------+------------|
| rightJoin | ok | not supported | |
|------------------+---------------+---------------+------------|
| innerJoin | ok | ok | |
|------------------+---------------+---------------+------------|
| and | ok | ok | |
|------------------+---------------+---------------+------------|
| or | ok | ok | |
|------------------+---------------+---------------+------------|
| groupBy | ok | ok | |
|------------------+---------------+---------------+------------|
| limit | ok | ok | |
|------------------+---------------+---------------+------------|
| orderBy | ok | ok | |
|------------------+---------------+---------------+------------|
| count | ok | ok | |
|------------------+---------------+---------------+------------|
| getById | ok | ok | |
|------------------+---------------+---------------+------------|
| search | ok | ok | |
|------------------+---------------+---------------+------------|
| get | ok | ok | |
|------------------+---------------+---------------+------------|
| getFirst | ok | ok | |
|------------------+---------------+---------------+------------|
| all | ok | ok | |
|------------------+---------------+---------------+------------|
| setNull | ok | ok | |
|------------------+---------------+---------------+------------|

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);
}

View File

@ -733,9 +733,13 @@ class Model {
static::$queryVars[':search'] = $search;
$where = [];
foreach($in as $row) {
$where[] = "$row LIKE CONCAT('%', :search, '%')";
}
if (DB_TYPE == 'sqlite')
foreach($in as $row)
$where[] = "$row LIKE '%' || :search || '%'";
else
foreach($in as $row)
$where[] = "$row LIKE CONCAT('%', :search, '%')";
if (static::$querySelect['where']=='')
static::$querySelect['where'] = join(' OR ', $where);