Started query builder class, renamed _manip classes to _sql
This commit is contained in:
parent
8fe6ec478c
commit
62f5d05849
@ -204,7 +204,7 @@ abstract class DB_PDO extends PDO {
|
|||||||
/**
|
/**
|
||||||
* Abstract parent for database manipulation subclasses
|
* Abstract parent for database manipulation subclasses
|
||||||
*/
|
*/
|
||||||
abstract class db_manip {
|
abstract class DB_SQL {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get database-specific sql to create a new table
|
* Get database-specific sql to create a new table
|
||||||
@ -226,5 +226,7 @@ abstract class db_manip {
|
|||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
abstract public function delete_table($name);
|
abstract public function delete_table($name);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
// End of db_pdo.php
|
// End of db_pdo.php
|
73
common/query_builder.php
Normal file
73
common/query_builder.php
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* OpenSQLManager
|
||||||
|
*
|
||||||
|
* Free Database manager for Open Source Databases
|
||||||
|
*
|
||||||
|
* @author Timothy J. Warren
|
||||||
|
* @copyright Copyright (c) 2012
|
||||||
|
* @link https://github.com/aviat4ion/OpenSQLManager
|
||||||
|
* @license http://philsturgeon.co.uk/code/dbad-license
|
||||||
|
*/
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convienience class for creating sql queries - also the class that
|
||||||
|
* instantiates the specific db driver
|
||||||
|
*/
|
||||||
|
class Query_Builder {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param string $conn_name - the name of the connection
|
||||||
|
*/
|
||||||
|
function __construct($conn_name)
|
||||||
|
{
|
||||||
|
$this->settings =& Settings::get_instance();
|
||||||
|
|
||||||
|
$params = $this->settings->get_db($conn_name);
|
||||||
|
|
||||||
|
$params->type = strtolower($params->type);
|
||||||
|
$dbtype = ($params->type !== 'postgresql') ? $params->type : 'pgsql';
|
||||||
|
|
||||||
|
// Initiate the constructor for the
|
||||||
|
switch($dbtype)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
$this->db = new $dbtype("host={$params->host};port={$params->port};", $params->user, $params->pass);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "sqlite":
|
||||||
|
$this->db = new $dbtype($params->file, $params->user, $params->pass);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "firebird":
|
||||||
|
$this->db = new $dbtype("{$params->host}:{$params->file}", $params->user, $params->pass);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut to directly call database methods
|
||||||
|
*
|
||||||
|
* @param string $name
|
||||||
|
* @param array $params
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function __call($name, $params)
|
||||||
|
{
|
||||||
|
if (is_callable($this->$db->$name))
|
||||||
|
{
|
||||||
|
return call_user_func_array(array(&$this->db, $name), $params);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -171,5 +171,19 @@ class Settings {
|
|||||||
{
|
{
|
||||||
return $this->current->dbs;
|
return $this->current->dbs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retreive a specific database connection
|
||||||
|
*
|
||||||
|
* @param string $name
|
||||||
|
* @return object
|
||||||
|
*/
|
||||||
|
public function get_db($name)
|
||||||
|
{
|
||||||
|
return (isset($this->current->dbs->{$name})) ? $this->current->dbs->{$name} : FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// End of settings.php
|
// End of settings.php
|
@ -28,12 +28,12 @@ class firebird extends DB_PDO {
|
|||||||
* @param string $user
|
* @param string $user
|
||||||
* @param string $pass
|
* @param string $pass
|
||||||
*/
|
*/
|
||||||
public function __construct($dbpath, $user="sysdba", $pass="masterkey")
|
public function __construct($dbpath, $user='sysdba', $pass='masterkey')
|
||||||
{
|
{
|
||||||
$this->conn =& ibase_connect($dbpath, $user, $pass);
|
$this->conn =& ibase_connect($dbpath, $user, $pass, 'utf-8');
|
||||||
|
|
||||||
$class = __CLASS__."_manip";
|
$class = __CLASS__."_sql";
|
||||||
$this->manip = new $class;
|
$this->sql = new $class;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
@ -13,11 +13,9 @@
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Firebird Database Manipulation class
|
* Firebird Specific SQL
|
||||||
*
|
|
||||||
* PDO-firebird isn't stable, so this is a wrapper of the ibase_ public functions.
|
|
||||||
*/
|
*/
|
||||||
class firebird_manip extends db_manip {
|
class Firebird_SQL extends DB_SQL {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convienience public function to generate sql for creating a db table
|
* Convienience public function to generate sql for creating a db table
|
||||||
@ -88,4 +86,4 @@ class firebird_manip extends db_manip {
|
|||||||
return 'DROP TABLE "'.$name.'"';
|
return 'DROP TABLE "'.$name.'"';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//End of firebird_manip.php
|
//End of firebird_sql.php
|
@ -36,8 +36,8 @@ class MySQL extends DB_PDO {
|
|||||||
|
|
||||||
parent::__construct("mysql:$dsn", $username, $password, $options);
|
parent::__construct("mysql:$dsn", $username, $password, $options);
|
||||||
|
|
||||||
$class = __CLASS__.'_manip';
|
$class = __CLASS__.'_sql';
|
||||||
$this->manip = new $class;
|
$this->sql = new $class;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
@ -13,9 +13,9 @@
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MySQL Database manipulation class
|
* MySQL specifc SQL
|
||||||
*/
|
*/
|
||||||
class MySQL_manip extends db_manip{
|
class MySQL_SQL extends DB_SQL{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convienience public function for creating a new MySQL table
|
* Convienience public function for creating a new MySQL table
|
||||||
@ -40,9 +40,7 @@
|
|||||||
*/
|
*/
|
||||||
public function delete_table($name)
|
public function delete_table($name)
|
||||||
{
|
{
|
||||||
return <<<SQL
|
return "DROP TABLE `{$name}`";
|
||||||
DROP TABLE `{$name}`
|
|
||||||
SQL;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//End of mysql_manip.php
|
//End of mysql_sql.php
|
@ -25,8 +25,8 @@ class ODBC extends DB_PDO {
|
|||||||
{
|
{
|
||||||
parent::__construct("odbc:$dsn", $username, $password, $options);
|
parent::__construct("odbc:$dsn", $username, $password, $options);
|
||||||
|
|
||||||
$class = __CLASS__.'_manip';
|
$class = __CLASS__.'_sql';
|
||||||
$this->manip = new $class;
|
$this->sql = new $class;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
@ -13,11 +13,9 @@
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ODBC Database Manipulation class
|
* ODBC SQL Class
|
||||||
*
|
|
||||||
* @extends ODBC
|
|
||||||
*/
|
*/
|
||||||
class ODBC_manip extends db_manip {
|
class ODBC_SQL extends DB_SQL {
|
||||||
|
|
||||||
public function create_table($name, $columns, $constraints=array(), $indexes=array())
|
public function create_table($name, $columns, $constraints=array(), $indexes=array())
|
||||||
{
|
{
|
||||||
@ -30,4 +28,4 @@ class ODBC_manip extends db_manip {
|
|||||||
return "DROP TABLE {$name}";
|
return "DROP TABLE {$name}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// End of odbc_manip.php
|
// End of odbc_sql.php
|
@ -32,8 +32,8 @@ class pgSQL extends DB_PDO {
|
|||||||
parent::__construct("pgsql:$dsn", $username, $password, $options);
|
parent::__construct("pgsql:$dsn", $username, $password, $options);
|
||||||
|
|
||||||
//Get db manip class
|
//Get db manip class
|
||||||
$class = __CLASS__.'_manip';
|
$class = __CLASS__.'_sql';
|
||||||
$this->manip = new $class;
|
$this->sql = new $class;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
@ -13,11 +13,9 @@
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PostgreSQL DB Structure manipulation class
|
* PostgreSQL specifc SQL
|
||||||
*
|
|
||||||
* @extends PgSQL
|
|
||||||
*/
|
*/
|
||||||
class pgSQL_manip extends db_manip {
|
class pgSQL_SQL extends DB_SQL {
|
||||||
|
|
||||||
public function create_table($name, $columns, $constraints=array(), $indexes=array())
|
public function create_table($name, $columns, $constraints=array(), $indexes=array())
|
||||||
{
|
{
|
||||||
@ -26,9 +24,7 @@ class pgSQL_manip extends db_manip {
|
|||||||
|
|
||||||
public function delete_table($name)
|
public function delete_table($name)
|
||||||
{
|
{
|
||||||
return <<<SQL
|
return 'DROP TABLE "'.$name.'"';
|
||||||
DROP TABLE "{$name}"
|
|
||||||
SQL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -31,8 +31,8 @@ class SQLite extends DB_PDO {
|
|||||||
// DSN is simply `sqlite:/path/to/db`
|
// DSN is simply `sqlite:/path/to/db`
|
||||||
parent::__construct("sqlite:{$dsn}", $user, $pass);
|
parent::__construct("sqlite:{$dsn}", $user, $pass);
|
||||||
|
|
||||||
$class = __CLASS__."_manip";
|
$class = __CLASS__."_sql";
|
||||||
$this->manip = new $class;
|
$this->sql = new $class;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
@ -13,9 +13,9 @@
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SQLite Database manipulation class
|
* SQLite Specific SQL
|
||||||
*/
|
*/
|
||||||
class SQLite_manip extends db_manip {
|
class SQLite_SQL extends DB_SQL {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convenience public function to create a new table
|
* Convenience public function to create a new table
|
||||||
@ -99,4 +99,4 @@ class SQLite_manip extends db_manip {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//End of sqlite_manip.php
|
//End of sqlite_sql.php
|
@ -94,7 +94,7 @@ foreach(pdo_drivers() as $d)
|
|||||||
if(is_file($file))
|
if(is_file($file))
|
||||||
{
|
{
|
||||||
require_once("{$path}{$d}.php");
|
require_once("{$path}{$d}.php");
|
||||||
require_once("{$path}{$d}_manip.php");
|
require_once("{$path}{$d}_sql.php");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ foreach(pdo_drivers() as $d)
|
|||||||
if(function_exists('ibase_connect'))
|
if(function_exists('ibase_connect'))
|
||||||
{
|
{
|
||||||
require_once("{$path}firebird.php");
|
require_once("{$path}firebird.php");
|
||||||
require_once("{$path}firebird_manip.php");
|
require_once("{$path}firebird_sql.php");
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
@ -72,7 +72,7 @@ class FirebirdTest extends UnitTestCase {
|
|||||||
function TestCreateTable()
|
function TestCreateTable()
|
||||||
{
|
{
|
||||||
//Attempt to create the table
|
//Attempt to create the table
|
||||||
$sql = $this->db->manip->create_table('create_test', array(
|
$sql = $this->db->sql->create_table('create_test', array(
|
||||||
'id' => 'SMALLINT',
|
'id' => 'SMALLINT',
|
||||||
'key' => 'VARCHAR(64)',
|
'key' => 'VARCHAR(64)',
|
||||||
'val' => 'BLOB SUB_TYPE TEXT'
|
'val' => 'BLOB SUB_TYPE TEXT'
|
||||||
@ -123,7 +123,7 @@ SQL;
|
|||||||
function TestDeleteTable()
|
function TestDeleteTable()
|
||||||
{
|
{
|
||||||
//Attempt to delete the table
|
//Attempt to delete the table
|
||||||
$sql = $this->db->manip->delete_table('create_test');
|
$sql = $this->db->sql->delete_table('create_test');
|
||||||
$this->db->query($sql);
|
$this->db->query($sql);
|
||||||
|
|
||||||
//Reset
|
//Reset
|
||||||
|
@ -47,7 +47,7 @@ class SQLiteTest extends UnitTestCase {
|
|||||||
function TestCreateTable()
|
function TestCreateTable()
|
||||||
{
|
{
|
||||||
//Attempt to create the table
|
//Attempt to create the table
|
||||||
$sql = $this->db->manip->create_table('create_test',
|
$sql = $this->db->sql->create_table('create_test',
|
||||||
array(
|
array(
|
||||||
'id' => 'INTEGER',
|
'id' => 'INTEGER',
|
||||||
'key' => 'TEXT',
|
'key' => 'TEXT',
|
||||||
@ -95,7 +95,7 @@ SQL;
|
|||||||
$this->assertTrue(isset($dbs['create_test']));
|
$this->assertTrue(isset($dbs['create_test']));
|
||||||
|
|
||||||
//Attempt to delete the table
|
//Attempt to delete the table
|
||||||
$sql = $this->db->manip->delete_table('create_test');
|
$sql = $this->db->sql->delete_table('create_test');
|
||||||
$this->db->query($sql);
|
$this->db->query($sql);
|
||||||
|
|
||||||
//Check
|
//Check
|
||||||
|
@ -45,7 +45,7 @@ foreach(pdo_drivers() as $d)
|
|||||||
if(is_file($src_file))
|
if(is_file($src_file))
|
||||||
{
|
{
|
||||||
require_once("{$src_path}{$d}.php");
|
require_once("{$src_path}{$d}.php");
|
||||||
require_once("{$src_path}{$d}_manip.php");
|
require_once("{$src_path}{$d}_sql.php");
|
||||||
require_once("{$test_path}{$d}.php");
|
require_once("{$test_path}{$d}.php");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -54,6 +54,6 @@ foreach(pdo_drivers() as $d)
|
|||||||
if(function_exists('ibase_connect'))
|
if(function_exists('ibase_connect'))
|
||||||
{
|
{
|
||||||
require_once("{$src_path}firebird.php");
|
require_once("{$src_path}firebird.php");
|
||||||
require_once("{$src_path}firebird_manip.php");
|
require_once("{$src_path}firebird_sql.php");
|
||||||
require_once("{$test_path}firebird.php");
|
require_once("{$test_path}firebird.php");
|
||||||
}
|
}
|
Binary file not shown.
Reference in New Issue
Block a user