diff options
author | Frédéric Guillot <fguillot@users.noreply.github.com> | 2014-03-30 19:53:59 -0400 |
---|---|---|
committer | Frédéric Guillot <fguillot@users.noreply.github.com> | 2014-03-30 19:53:59 -0400 |
commit | d9dfd9d6199b15eba9510ef460e18c9245d9ab12 (patch) | |
tree | 6704134700cbc80c39b289620917d4bec011998e /vendor/PicoDb | |
parent | 34711f584651205cb6738b49df285d93a35393b5 (diff) |
Add Mysql/MariaDB support
Diffstat (limited to 'vendor/PicoDb')
-rw-r--r-- | vendor/PicoDb/Database.php | 7 | ||||
-rw-r--r-- | vendor/PicoDb/Drivers/Mysql.php | 76 | ||||
-rw-r--r-- | vendor/PicoDb/Drivers/Sqlite.php | 17 | ||||
-rw-r--r-- | vendor/PicoDb/Schema.php | 1 | ||||
-rw-r--r-- | vendor/PicoDb/Table.php | 3 |
5 files changed, 96 insertions, 8 deletions
diff --git a/vendor/PicoDb/Database.php b/vendor/PicoDb/Database.php index 86f5fe3c..9201e9d2 100644 --- a/vendor/PicoDb/Database.php +++ b/vendor/PicoDb/Database.php @@ -19,7 +19,12 @@ class Database case 'sqlite': require_once __DIR__.'/Drivers/Sqlite.php'; - $this->pdo = new Sqlite($settings['filename']); + $this->pdo = new Sqlite($settings); + break; + + case 'mysql': + require_once __DIR__.'/Drivers/Mysql.php'; + $this->pdo = new Mysql($settings); break; default: diff --git a/vendor/PicoDb/Drivers/Mysql.php b/vendor/PicoDb/Drivers/Mysql.php new file mode 100644 index 00000000..22277a01 --- /dev/null +++ b/vendor/PicoDb/Drivers/Mysql.php @@ -0,0 +1,76 @@ +<?php + +namespace PicoDb; + +class Mysql extends \PDO { + + private $schema_table = 'schema_version'; + + + public function __construct(array $settings) + { + $required_atttributes = array( + 'hostname', + 'username', + 'password', + 'database', + 'charset', + ); + + foreach ($required_atttributes as $attribute) { + if (! isset($settings[$attribute])) { + throw new \LogicException('This configuration parameter is missing: "'.$attribute.'"'); + } + } + + $dsn = 'mysql:host='.$settings['hostname'].';dbname='.$settings['database']; + $options = array( + \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES '.$settings['charset'] + ); + + parent::__construct($dsn, $settings['username'], $settings['password'], $options); + + if (isset($settings['schema_table'])) { + $this->schema_table = $settings['schema_table']; + } + } + + + public function getSchemaVersion() + { + $this->exec("CREATE TABLE IF NOT EXISTS `".$this->schema_table."` (`version` INT DEFAULT '0')"); + + $rq = $this->prepare('SELECT `version` FROM `'.$this->schema_table.'`'); + $rq->execute(); + $result = $rq->fetch(\PDO::FETCH_ASSOC); + + if (isset($result['version'])) { + return (int) $result['version']; + } + else { + $this->exec('INSERT INTO `'.$this->schema_table.'` VALUES(0)'); + } + + return 0; + } + + + public function setSchemaVersion($version) + { + $rq = $this->prepare('UPDATE `'.$this->schema_table.'` SET `version`=?'); + $rq->execute(array($version)); + } + + + public function getLastId() + { + return $this->lastInsertId(); + } + + + public function escapeIdentifier($value) + { + if (strpos($value, '.') !== false) return $value; + return '`'.$value.'`'; + } +}
\ No newline at end of file diff --git a/vendor/PicoDb/Drivers/Sqlite.php b/vendor/PicoDb/Drivers/Sqlite.php index 6555e73d..83b61c40 100644 --- a/vendor/PicoDb/Drivers/Sqlite.php +++ b/vendor/PicoDb/Drivers/Sqlite.php @@ -5,9 +5,19 @@ namespace PicoDb; class Sqlite extends \PDO { - public function __construct($filename) + public function __construct(array $settings) { - parent::__construct('sqlite:'.$filename); + $required_atttributes = array( + 'filename', + ); + + foreach ($required_atttributes as $attribute) { + if (! isset($settings[$attribute])) { + throw new \LogicException('This configuration parameter is missing: "'.$attribute.'"'); + } + } + + parent::__construct('sqlite:'.$settings['filename']); $this->exec('PRAGMA foreign_keys = ON'); } @@ -20,8 +30,7 @@ class Sqlite extends \PDO { $result = $rq->fetch(\PDO::FETCH_ASSOC); if (isset($result['user_version'])) { - - return $result['user_version']; + return (int) $result['user_version']; } return 0; diff --git a/vendor/PicoDb/Schema.php b/vendor/PicoDb/Schema.php index 2f52b846..b75366ea 100644 --- a/vendor/PicoDb/Schema.php +++ b/vendor/PicoDb/Schema.php @@ -18,7 +18,6 @@ class Schema $current_version = $this->db->getConnection()->getSchemaVersion(); if ($current_version < $last_version) { - return $this->migrateTo($current_version, $last_version); } diff --git a/vendor/PicoDb/Table.php b/vendor/PicoDb/Table.php index 4cdf35f7..494e350a 100644 --- a/vendor/PicoDb/Table.php +++ b/vendor/PicoDb/Table.php @@ -67,8 +67,7 @@ class Table $result = $this->db->execute($sql, $values); - if ($result !== false && $result->rowCount() > 0) { - + if ($result !== false/* && $result->rowCount() > 0*/) { return true; } |