From 3174ec1e0b49611779b9c1847f54d150095983e8 Mon Sep 17 00:00:00 2001 From: Dmitry Khomutov Date: Fri, 9 May 2014 23:41:26 +0700 Subject: [PATCH 1/2] Added Sqlite plugin --- PHPCI/Plugin/Sqlite.php | 81 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 PHPCI/Plugin/Sqlite.php diff --git a/PHPCI/Plugin/Sqlite.php b/PHPCI/Plugin/Sqlite.php new file mode 100644 index 00000000..4753b6e7 --- /dev/null +++ b/PHPCI/Plugin/Sqlite.php @@ -0,0 +1,81 @@ + +* @package PHPCI +* @subpackage Plugins +*/ +class Sqlite implements \PHPCI\Plugin +{ + /** + * @var \PHPCI\Builder + */ + protected $phpci; + + /** + * @var \PHPCI\Model\Build + */ + protected $build; + + /** + * @var array + */ + protected $queries = array(); + + /** + * @var string + */ + protected $path; + + /** + * @param Builder $phpci + * @param Build $build + * @param array $options + */ + public function __construct(Builder $phpci, Build $build, array $options = array()) + { + $this->phpci = $phpci; + $this->build = $build; + $this->queries = $options; + $buildSettings = $phpci->getConfig('build_settings'); + + if (isset($buildSettings['sqlite'])) { + $sql = $buildSettings['sqlite']; + $this->path = $sql['path']; + } + } + + /** + * Connects to SQLite and runs a specified set of queries. + * @return boolean + */ + public function execute() + { + try { + $opts = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION); + $pdo = new PDO('sqlite:' . $this->path, $opts); + + foreach ($this->queries as $query) { + $pdo->query($query); + } + } catch (\Exception $ex) { + $this->phpci->logFailure($ex->getMessage()); + return false; + } + return true; + } +} From 47b5dea03c09c3f9b994c66dec3286174574a681 Mon Sep 17 00:00:00 2001 From: Dmitry Khomutov Date: Fri, 9 May 2014 23:49:20 +0700 Subject: [PATCH 2/2] Small fixes for SQL plugins (phpdocs, some fixes) --- PHPCI/Plugin.php | 1 - PHPCI/Plugin/Mysql.php | 42 +++++++++++++++++++++++++++++++----------- PHPCI/Plugin/Pgsql.php | 33 ++++++++++++++++++++++++++++++--- 3 files changed, 61 insertions(+), 15 deletions(-) diff --git a/PHPCI/Plugin.php b/PHPCI/Plugin.php index 6f915e3b..d4e90ef0 100644 --- a/PHPCI/Plugin.php +++ b/PHPCI/Plugin.php @@ -9,7 +9,6 @@ namespace PHPCI; -use PHPCI\Builder; use PHPCI\Model\Build; /** diff --git a/PHPCI/Plugin/Mysql.php b/PHPCI/Plugin/Mysql.php index c66f77cb..d2a4314e 100755 --- a/PHPCI/Plugin/Mysql.php +++ b/PHPCI/Plugin/Mysql.php @@ -22,24 +22,41 @@ use PHPCI\Model\Build; */ class Mysql implements \PHPCI\Plugin { - /** * @var \PHPCI\Builder */ protected $phpci; + + /** + * @var \PHPCI\Model\Build + */ protected $build; + + /** + * @var array + */ protected $queries = array(); + /** + * @var string + */ protected $host; + + /** + * @var string + */ protected $user; + + /** + * @var string + */ protected $pass; /** - * Database Connection - * @var PDO + * @param Builder $phpci + * @param Build $build + * @param array $options */ - protected $pdo; - public function __construct(Builder $phpci, Build $build, array $options = array()) { $this->phpci = $phpci; @@ -74,19 +91,18 @@ class Mysql implements \PHPCI\Plugin /** * Connects to MySQL and runs a specified set of queries. + * @return boolean */ public function execute() { - $success = true; - try { $opts = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION); - $this->pdo = new PDO('mysql:host=' . $this->host, $this->user, $this->pass, $opts); + $pdo = new PDO('mysql:host=' . $this->host, $this->user, $this->pass, $opts); foreach ($this->queries as $query) { if (!is_array($query)) { // Simple query - $this->pdo->query($this->phpci->interpolate($query)); + $pdo->query($this->phpci->interpolate($query)); } elseif (isset($query['import'])) { // SQL file execution $this->executeFile($query['import']); @@ -98,10 +114,14 @@ class Mysql implements \PHPCI\Plugin $this->phpci->logFailure($ex->getMessage()); return false; } - - return $success; + return true; } + /** + * @param string $query + * @return boolean + * @throws \Exception + */ protected function executeFile($query) { if (!isset($query['file'])) { diff --git a/PHPCI/Plugin/Pgsql.php b/PHPCI/Plugin/Pgsql.php index a05068d2..e4001132 100644 --- a/PHPCI/Plugin/Pgsql.php +++ b/PHPCI/Plugin/Pgsql.php @@ -21,18 +21,45 @@ use PHPCI\Model\Build; */ class Pgsql implements \PHPCI\Plugin { + /** + * @var \PHPCI\Builder + */ protected $phpci; + + /** + * @var \PHPCI\Model\Build + */ protected $build; + + /** + * @var array + */ protected $queries = array(); + /** + * @var string + */ protected $host; + + /** + * @var string + */ protected $user; + + /** + * @var string + */ protected $pass; + /** + * @param Builder $phpci + * @param Build $build + * @param array $options + */ public function __construct(Builder $phpci, Build $build, array $options = array()) { - $this->phpci = $phpci; - $this->build = $build; + $this->phpci = $phpci; + $this->build = $build; $this->queries = $options; $buildSettings = $phpci->getConfig('build_settings'); @@ -47,6 +74,7 @@ class Pgsql implements \PHPCI\Plugin /** * Connects to PgSQL and runs a specified set of queries. + * @return boolean */ public function execute() { @@ -61,7 +89,6 @@ class Pgsql implements \PHPCI\Plugin $this->phpci->logFailure($ex->getMessage()); return false; } - return true; } }