Initial commit
This commit is contained in:
@@ -131,7 +131,6 @@ class TableModel
|
||||
|
||||
$database = DatabaseFactory::getFactory()->getConnection();
|
||||
|
||||
// Build column definitions
|
||||
$column_definitions = array();
|
||||
foreach ($columns as $column) {
|
||||
$definition = "`" . $column['name'] . "` " . $column['type'];
|
||||
@@ -151,7 +150,6 @@ class TableModel
|
||||
$column_definitions[] = $definition;
|
||||
}
|
||||
|
||||
// Handle primary key
|
||||
foreach ($columns as $column) {
|
||||
if (isset($column['key']) && $column['key'] === 'PRI') {
|
||||
$column_definitions[] = "PRIMARY KEY (`" . $column['name'] . "`)";
|
||||
@@ -260,6 +258,169 @@ class TableModel
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the primary key column name for a table
|
||||
* @param string $database_name
|
||||
* @param string $table_name
|
||||
* @return string|null
|
||||
*/
|
||||
public static function getPrimaryKeyColumn($database_name, $table_name)
|
||||
{
|
||||
$columns = self::getTableColumns($database_name, $table_name);
|
||||
foreach ($columns as $column) {
|
||||
if ($column['Key'] === 'PRI') {
|
||||
return $column['Field'];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a single row by primary key
|
||||
* @param string $database_name
|
||||
* @param string $table_name
|
||||
* @param mixed $pk_value
|
||||
* @return array|null
|
||||
*/
|
||||
public static function getRow($database_name, $table_name, $pk_value)
|
||||
{
|
||||
$pk_column = self::getPrimaryKeyColumn($database_name, $table_name);
|
||||
if (!$pk_column) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$database = DatabaseFactory::getFactory()->getConnection();
|
||||
|
||||
$sql = "SELECT * FROM `" . $database_name . "`.`" . $table_name . "` WHERE `" . $pk_column . "` = :pk_value LIMIT 1";
|
||||
$query = $database->prepare($sql);
|
||||
$query->execute(array(':pk_value' => $pk_value));
|
||||
|
||||
return $query->fetch(PDO::FETCH_ASSOC);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a row in the table
|
||||
* @param string $database_name
|
||||
* @param string $table_name
|
||||
* @param mixed $pk_value
|
||||
* @param array $data - associative array of column => value
|
||||
* @return bool
|
||||
*/
|
||||
public static function updateRow($database_name, $table_name, $pk_value, $data)
|
||||
{
|
||||
if (!$database_name || !$table_name || !$pk_value || empty($data)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$pk_column = self::getPrimaryKeyColumn($database_name, $table_name);
|
||||
if (!$pk_column) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$database = DatabaseFactory::getFactory()->getConnection();
|
||||
|
||||
$set_parts = array();
|
||||
$params = array();
|
||||
$i = 0;
|
||||
foreach ($data as $column => $value) {
|
||||
if ($column === $pk_column) {
|
||||
continue;
|
||||
}
|
||||
$param_name = ':param_' . $i;
|
||||
$set_parts[] = "`" . $column . "` = " . $param_name;
|
||||
$params[$param_name] = $value === '' ? null : $value;
|
||||
$i++;
|
||||
}
|
||||
|
||||
if (empty($set_parts)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$params[':pk_value'] = $pk_value;
|
||||
|
||||
try {
|
||||
$sql = "UPDATE `" . $database_name . "`.`" . $table_name . "` SET " . implode(', ', $set_parts) . " WHERE `" . $pk_column . "` = :pk_value";
|
||||
$query = $database->prepare($sql);
|
||||
return $query->execute($params);
|
||||
} catch (PDOException $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a row from the table
|
||||
* @param string $database_name
|
||||
* @param string $table_name
|
||||
* @param mixed $pk_value
|
||||
* @return bool
|
||||
*/
|
||||
public static function deleteRow($database_name, $table_name, $pk_value)
|
||||
{
|
||||
if (!$database_name || !$table_name || !$pk_value) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$pk_column = self::getPrimaryKeyColumn($database_name, $table_name);
|
||||
if (!$pk_column) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$database = DatabaseFactory::getFactory()->getConnection();
|
||||
|
||||
try {
|
||||
$sql = "DELETE FROM `" . $database_name . "`.`" . $table_name . "` WHERE `" . $pk_column . "` = :pk_value";
|
||||
$query = $database->prepare($sql);
|
||||
return $query->execute(array(':pk_value' => $pk_value));
|
||||
} catch (PDOException $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Insert a new row into the table
|
||||
* @param string $database_name
|
||||
* @param string $table_name
|
||||
* @param array $data - associative array of column => value
|
||||
* @return bool|int - returns insert ID on success, false on failure
|
||||
*/
|
||||
public static function insertRow($database_name, $table_name, $data)
|
||||
{
|
||||
if (!$database_name || !$table_name || empty($data)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$database = DatabaseFactory::getFactory()->getConnection();
|
||||
|
||||
$columns = array();
|
||||
$placeholders = array();
|
||||
$params = array();
|
||||
$i = 0;
|
||||
|
||||
foreach ($data as $column => $value) {
|
||||
if ($value === '' || $value === null) {
|
||||
continue;
|
||||
}
|
||||
$columns[] = "`" . $column . "`";
|
||||
$param_name = ':param_' . $i;
|
||||
$placeholders[] = $param_name;
|
||||
$params[$param_name] = $value;
|
||||
$i++;
|
||||
}
|
||||
|
||||
if (empty($columns)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
$sql = "INSERT INTO `" . $database_name . "`.`" . $table_name . "` (" . implode(', ', $columns) . ") VALUES (" . implode(', ', $placeholders) . ")";
|
||||
$query = $database->prepare($sql);
|
||||
$query->execute($params);
|
||||
return $database->lastInsertId();
|
||||
} catch (PDOException $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Format bytes to human readable format
|
||||
* @param int $bytes
|
||||
|
||||
Reference in New Issue
Block a user