From 4036b7c299146337b79fba782850ffbd109fd7f8 Mon Sep 17 00:00:00 2001 From: nbm Date: Wed, 1 Dec 2004 12:28:58 +0000 Subject: [PATCH] Database access utility class to reduce code repetition and complexity and make it easier to make wide-spread changes in the database area. --- lib/database/dbutil.inc | 151 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+), 0 deletions(-) create mode 100644 lib/database/dbutil.inc diff --git a/lib/database/dbutil.inc b/lib/database/dbutil.inc new file mode 100644 index 0000000..a8bbd7e --- /dev/null +++ b/lib/database/dbutil.inc @@ -0,0 +1,151 @@ +_db; + } + return $db; + } + + function runQuery($query, $db = null) { + global $default; + $aParams = null; + + $db =& DBUtil::getDB($db); + + if (is_array($query)) { + $sQuery = $query[0]; + $aParams = $query[1]; + } + $res = $db->query($sQuery, $aParams); + $default->log->info('Query: ' . DBUtil::lastQuery($db)); + return $res; + } + + function getOneResult($query, $db = null) { + $result = DBUtil::runQuery($query, $db); + if (PEAR::isError($result)) { + DBUtil::logQueryError($query, $result); + return $result; + } + $aRow = $result->fetchRow(); + $result->free(); + return $aRow; + } + + function getOneResultKey($query, $key, $db = null) { + $aRow = DBUtil::getOneResult($query, $db); + if (PEAR::isError($aRow)) { + return $aRow; + } + return $aRow[$key]; + } + + function getResultArray($query, $db = null) { + $result = DBUtil::runQuery($query, $db); + if (PEAR::isError($result)) { + DBUtil::logQueryError($query, $result); + return $result; + } + + $aReturn = array(); + while ($aRow = $result->fetchRow()) { + $aReturn[] = $aRow; + } + $result->free(); + return $aReturn; + } + + function getResultArrayKey($query, $key, $db = null) { + $result = DBUtil::runQuery($query, $db); + if (PEAR::isError($result)) { + DBUtil::logQueryError($query, $result); + return $result; + } + + $aReturn = array(); + while ($aRow = $result->fetchRow()) { + $aReturn[] = $aRow[$key]; + } + $result->free(); + return $aReturn; + } + + function logQueryError($query, $result) { + global $default; + $default->log->error($result->toString()); + } + + function nextId($seqname, $ondemand = false, $db = null) { + $db =& DBUtil::getDB($db); + + return $db->nextId($seqname, $ondemand); + } + + function runQueries($aQueries, $db = null) { + foreach ($aQueries as $sQuery) { + $res = DBUtil::runQuery($sQuery, $db); + if (PEAR::isError($res)) { + return $res; + } + } + return true; + } + + function &autoInsert($sTable, $aFieldValues, $db = null) { + global $default; + $default->log->info('AutoInsert called for table ' . $sTable); + global $default; + $db =& DBUtil::getDB(); + if (!array_key_exists('id', $aFieldValues)) { + $aFieldValues['id'] = DBUtil::nextId($sTable, null, $db); + } + $res = $db->autoExecute($sTable, $aFieldValues); + $default->log->info('Query: ' . DBUtil::lastQuery($db)); + if ($res === DB_OK) { + return $aFieldValues['id']; + } + if (PEAR::isError($res)) { + return $res; + } + return PEAR::raiseError('Unknown return value for autoInsert'); + } + + function &lastQuery($db) { + $db =& DBUtil::getDB(); + return $db->last_query; + } + +} + +?> -- libgit2 0.21.4