← Back to team overview

anewt-developers team mailing list archive

[Branch ~uws/anewt/anewt.uws] Rev 1709: [autorecord] Minor SQL logic refactoring

 

------------------------------------------------------------
revno: 1709
committer: Wouter Bolsterlee <uws@xxxxxxxxx>
branch nick: anewt.uws
timestamp: Sun 2009-07-26 16:38:59 +0200
message:
  [autorecord] Minor SQL logic refactoring
  
  Instead of using AnewtDatabasePreparedQuery and
  AnewtDatabaseResultSet directly,
  AnewtAutoRecord::find_by_sql() now builds a fullly escaped
  SQL query string using AnewtDatabaseSQLTemplate, then uses
  either AnewtDatabaseConnection::prepare_execute_fetch_one()
  or AnewtDatabaseConnection::prepare_execute_fetch_all() to
  fetch the records from the database.
  
  This makes caching with AnewtDatabaseConnectionMemcache
  possible, since that only works for
  prepare_execute_fetch_one() and prepare_execute_fetch_all();
  not for manually prepared queries.
modified:
  autorecord/autorecord.lib.php


--
lp:anewt
https://code.launchpad.net/~uws/anewt/anewt.uws

Your team Anewt developers is subscribed to branch lp:anewt.
To unsubscribe from this branch go to https://code.launchpad.net/~uws/anewt/anewt.uws/+edit-subscription.
=== modified file 'autorecord/autorecord.lib.php'
--- autorecord/autorecord.lib.php	2009-07-21 19:34:32 +0000
+++ autorecord/autorecord.lib.php	2009-07-26 14:38:59 +0000
@@ -816,16 +816,19 @@
 				? ''
 				: sprintf('ORDER BY %s', $sql_order_by);
 
-			$prepared_query = $connection->prepare('SELECT ?raw? FROM ?raw? ?raw?;');
-			$result_set = $prepared_query->execute($sql_select, $sql_from, $sql_order_by_full);
+			$sql_full = $connection->create_sql_template
+				('SELECT ?raw? FROM ?raw? ?raw?;')
+				->fill($sql_select, $sql_from, $sql_order_by_full);
 		}
 		elseif (is_string($sql))
 		{
 			/* SQL string */
 
-			$sql_filled = $connection->create_sql_template($sql)->fillv($values);
-			$prepared_query = $connection->prepare('SELECT ?raw? FROM ?raw? ?raw?;');
-			$result_set = $prepared_query->execute($sql_select, $sql_from, $sql_filled);
+			$sql_with_values = $connection->create_sql_template($sql)->fillv($values);
+
+			$sql_full =
+				$connection->create_sql_template('SELECT ?raw? FROM ?raw? ?raw?;')
+				->fill($sql_select, $sql_from, $sql_with_values);
 		}
 		else
 		{
@@ -881,9 +884,13 @@
 
 			/* Combine */
 
-			$sql_combined = $connection->create_sql_template(join(' ', $sql_parts))->fillv($values);
-			$prepared_query = $connection->prepare('SELECT ?raw? FROM ?raw? ?raw?;');
-			$result_set = $prepared_query->execute($sql_select, $sql_from, $sql_combined);
+			$sql_parts_combined =
+				$connection->create_sql_template(join(' ', $sql_parts))
+				->fillv($values);
+
+			$sql_full =
+				$connection->create_sql_template('SELECT ?raw? FROM ?raw? ?raw?;')
+				->fill($sql_select, $sql_from, $sql_parts_combined);
 		}
 
 
@@ -891,22 +898,17 @@
 
 		if ($just_one_result)
 		{
-			$row = $result_set->fetch_one();
+			$row = $connection->prepare_execute_fetch_one($sql_full);
 
 			if (!$row)
 				return null;
 
-			$out = AnewtAutoRecord::_db_object_from_array($class, $row);
-			$result_set->free();
-
-			return $out;
+			return AnewtAutoRecord::_db_object_from_array($class, $row);
 		}
 		else
 		{
-			$rows = $result_set->fetch_all();
-			$out = AnewtAutoRecord::_db_objects_from_arrays($class, $rows);
-
-			return $out;
+			$rows = $connection->prepare_execute_fetch_all($sql_full);
+			return AnewtAutoRecord::_db_objects_from_arrays($class, $rows);
 		}
 	}