Rename db_util to abstract_util, mark create_table method as deprecated

This commit is contained in:
Timothy Warren 2014-04-03 14:44:03 -04:00
parent 4809016c31
commit a3339200f0
10 changed files with 47 additions and 18 deletions

View File

@ -416,7 +416,7 @@ abstract class Abstract_Driver extends \PDO implements Driver_Interface {
public function driver_query($query, $filtered_index=TRUE) public function driver_query($query, $filtered_index=TRUE)
{ {
// Call the appropriate method, if it exists // Call the appropriate method, if it exists
if (method_exists($this->sql, $query)) if (is_string($query) && method_exists($this->sql, $query))
{ {
$query = $this->sql->$query(); $query = $this->sql->$query();
} }

View File

@ -15,15 +15,13 @@
namespace Query\Driver; namespace Query\Driver;
use \Query;
/** /**
* Abstract class defining database / table creation methods * Abstract class defining database / table creation methods
* *
* @package Query * @package Query
* @subpackage Drivers * @subpackage Drivers
*/ */
abstract class DB_Util { abstract class Abstract_Util {
/** /**
* Reference to the current connection object * Reference to the current connection object
@ -139,4 +137,4 @@ abstract class DB_Util {
abstract public function backup_data(); abstract public function backup_data();
} }
// End of db_util.php // End of abstract_util.php

View File

@ -241,3 +241,4 @@ final class Connection_Manager {
return $dsn; return $dsn;
} }
} }
// End of connection_manager.php

View File

@ -353,9 +353,8 @@ class Firebird extends Abstract_Driver {
// Start the block of sql statements // Start the block of sql statements
$sql = "EXECUTE BLOCK AS BEGIN\n"; $sql = "EXECUTE BLOCK AS BEGIN\n";
$vals = array(); // Values for insertion
$table = $this->quote_table($table); $table = $this->quote_table($table);
$fields = array_keys(current($data)); $fields = \array_keys(\current($data));
$insert_template = "INSERT INTO {$table} (" $insert_template = "INSERT INTO {$table} ("
. implode(',', $this->quote_ident($fields)) . implode(',', $this->quote_ident($fields))

View File

@ -24,7 +24,7 @@ namespace Query\Driver;
* @method array get_tables() * @method array get_tables()
* @method object query(string $sql) * @method object query(string $sql)
*/ */
class Firebird_Util extends DB_Util { class Firebird_Util extends Abstract_Util {
/** /**
* Create an SQL backup file for the current database's structure * Create an SQL backup file for the current database's structure

View File

@ -27,12 +27,13 @@ namespace Query\Driver;
* @method mixed query(string $sql) * @method mixed query(string $sql)
* @method string quote(string $str) * @method string quote(string $str)
*/ */
class MySQL_Util extends DB_Util { class MySQL_Util extends Abstract_Util {
/** /**
* Convienience public function for creating a new MySQL table * Convienience public function for creating a new MySQL table
* *
* @codeCoverageIgnore * @codeCoverageIgnore
* @deprecated
* @param string $name * @param string $name
* @param array $columns * @param array $columns
* @param array $constraints * @param array $constraints

View File

@ -23,7 +23,7 @@ namespace Query\Driver;
* @method mixed query(string $sql) * @method mixed query(string $sql)
* @method array get_tables() * @method array get_tables()
*/ */
class PgSQL_Util extends DB_Util { class PgSQL_Util extends Abstract_Util {
/** /**
* Create an SQL backup file for the current database's structure * Create an SQL backup file for the current database's structure

View File

@ -100,10 +100,42 @@ class SQLite extends Abstract_Driver {
* @param array $data * @param array $data
* @return string * @return string
*/ */
/*public function insert_batch($table, $data=array()) public function insert_batch($table, $data=array())
{ {
// This is not very applicable to the firebird database // If greater than version 3.7.11, supports the same syntax as
return NULL; // MySQL and Postgres
}*/ if (version_compare($this->getAttribute(\PDO::ATTR_SERVER_VERSION), '3.7.11', '>='))
{
return parent::insert_batch($table, $data);
}
// --------------------------------------------------------------------------
// Otherwise, do a union query as an analogue to a 'proper' batch insert
// --------------------------------------------------------------------------
// Each member of the data array needs to be an array
if ( ! is_array(current($data))) return NULL;
// Start the block of sql statements
$table = $this->quote_table($table);
$sql = "INSERT INTO {$table} \n";
// Create a key-value mapping for each field
$first = array_shift($data);
$cols = array();
foreach($first as $colname => $datum)
{
$cols[] = $this->_quote($datum) . ' AS ' . $this->quote_ident($colname);
}
$sql .= "SELECT " . implode(', ', $cols) . "\n";
foreach($data as $item)
{
$vals = array_map(array($this, 'quote'), $item);
$sql .= "UNION SELECT " . implode(',', $vals) . "\n";
}
return array($sql, NULL);
}
} }
//End of sqlite_driver.php //End of sqlite_driver.php

View File

@ -23,12 +23,13 @@ namespace Query\Driver;
* @method mixed query(string $sql) * @method mixed query(string $sql)
* @method string quote(string $str) * @method string quote(string $str)
*/ */
class SQLite_Util extends DB_Util { class SQLite_Util extends Abstract_Util {
/** /**
* Convenience public function to create a new table * Convenience public function to create a new table
* *
* @codeCoverageIgnore * @codeCoverageIgnore
* @deprecated
* @param string $name //Name of the table * @param string $name //Name of the table
* @param array $columns //columns as straight array and/or column => type pairs * @param array $columns //columns as straight array and/or column => type pairs
* @param array $constraints // column => constraint pairs * @param array $constraints // column => constraint pairs
@ -101,7 +102,6 @@ class SQLite_Util extends DB_Util {
/** /**
* Create an SQL backup file for the current database's data * Create an SQL backup file for the current database's data
* *
* @codeCoverageIgnore
* @param array $excluded * @param array $excluded
* @return string * @return string
*/ */

View File

@ -24,8 +24,6 @@
// Set up in the bootstrap to mitigate // Set up in the bootstrap to mitigate
// connection locking issues // connection locking issues
$this->db = Query('test_sqlite'); $this->db = Query('test_sqlite');
// echo '<hr /> SQLite Queries <hr />';
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------