Browse Source

moved Manager.addQuote to Connection.addValue

Nicolas Cannasse 15 years ago
parent
commit
53a8c86239

+ 1 - 0
doc/CHANGES.txt

@@ -19,6 +19,7 @@
 	all : fixed List.map2 error when inline + optional args
 	flash9 : encode all ISO constant strings into UTF8 at compilation time
 	all : allow hxml with only -cmd statements
+	spod : moved Manager.addQuote to Connection.addValue
 
 2009-07-26: 2.04
 	flash9 : fixed get_full_path error with -D fdb

+ 2 - 0
std/neko/db/Connection.hx

@@ -30,9 +30,11 @@ interface Connection {
 	function close() : Void;
 	function escape( s : String ) : String;
 	function quote( s : String ) : String;
+	function addValue( s : StringBuf, v : Dynamic ) : Void;
 	function lastInsertId() : Int;
 	function dbName() : String;
 	function startTransaction() : Void;
 	function commit() : Void;
 	function rollback() : Void;
+
 }

+ 5 - 15
std/neko/db/Manager.hx

@@ -122,7 +122,7 @@ class Manager<T : Object> {
 		s.add(" WHERE ");
 		s.add(quoteField(table_keys[0]));
 		s.add(" = ");
-		addQuote(s,id);
+		cnx.addValue(s,id);
 		if( lock )
 			s.add(getLockMode());
 		return object(s.toString(),lock);
@@ -180,7 +180,7 @@ class Manager<T : Object> {
 					s.add(" IS NULL");
 				else {
 					s.add(" = ");
-					addQuote(s,d);
+					cnx.addValue(s,d);
 				}
 			}
 		if( first )
@@ -239,7 +239,7 @@ class Manager<T : Object> {
 				first = false;
 			else
 				s.add(", ");
-			addQuote(s,v);
+			cnx.addValue(s,v);
 		}
 		s.add(")");
 		execute(s.toString());
@@ -267,7 +267,7 @@ class Manager<T : Object> {
 					mod = true;
 				s.add(quoteField(f));
 				s.add(" = ");
-				addQuote(s,v);
+				cnx.addValue(s,v);
 				Reflect.setField(cache,f,v);
 			}
 		}
@@ -347,16 +347,6 @@ class Manager<T : Object> {
 		return KEYWORDS.exists(f.toLowerCase()) ? "`"+f+"`" : f;
 	}
 
-	function addQuote( s : StringBuf, v : Dynamic ) {
-		var t = untyped __dollar__typeof(v);
-		if( untyped (t == __dollar__tint || t == __dollar__tnull) )
-			s.add(v);
-		else if( untyped t == __dollar__tbool )
-			s.add(if( v ) 1 else 0);
-		else
-			s.add(cnx.quote(Std.string(v)));
-	}
-
 	function addKeys( s : StringBuf, x : {} ) {
 		var first = true;
 		for( k in table_keys ) {
@@ -369,7 +359,7 @@ class Manager<T : Object> {
 			var f = Reflect.field(x,k);
 			if( f == null )
 				throw ("Missing key "+k);
-			addQuote(s,f);
+			cnx.addValue(s,f);
 		}
 	}
 

+ 13 - 0
std/neko/db/Mysql.hx

@@ -150,6 +150,19 @@ private class MysqlConnection implements Connection {
 		return "'"+escape(s)+"'";
 	}
 
+	public function addValue( s : StringBuf, v : Dynamic ) {
+		var t = untyped __dollar__typeof(v);
+		if( untyped (t == __dollar__tint || t == __dollar__tnull) )
+			s.add(v);
+		else if( untyped t == __dollar__tbool )
+			s.addChar(if( v ) "1".code else "0".code);
+		else {
+			s.addChar("'".code);
+			s.add(escape(Std.string(v)));
+			s.addChar("'".code);
+		}
+	}
+
 	public function lastInsertId() {
 		return request("SELECT LAST_INSERT_ID()").getIntResult(0);
 	}

+ 10 - 0
std/neko/db/Sqlite.hx

@@ -56,6 +56,16 @@ private class SqliteConnection implements Connection {
 		return "'"+s.split("'").join("''")+"'";
 	}
 
+	public function addValue( s : StringBuf, v : Dynamic ) {
+		var t = untyped __dollar__typeof(v);
+		if( untyped (t == __dollar__tint || t == __dollar__tnull) )
+			s.add(v);
+		else if( untyped t == __dollar__tbool )
+			s.add(if( v ) 1 else 0);
+		else
+			s.add(quote(Std.string(v)));
+	}
+
 	public function lastInsertId() {
 		return _last_id(c);
 	}

+ 2 - 0
std/php/db/Connection.hx

@@ -30,9 +30,11 @@ interface Connection {
 	function close() : Void;
 	function escape( s : String ) : String;
 	function quote( s : String ) : String;
+	function addValue( s : StringBuf, v : Dynamic ) : Void;
 	function lastInsertId() : Int;
 	function dbName() : String;
 	function startTransaction() : Void;
 	function commit() : Void;
 	function rollback() : Void;
+
 }

+ 5 - 14
std/php/db/Manager.hx

@@ -129,7 +129,7 @@ class Manager<T : Object> {
 		s.add(" WHERE ");
 		s.add(quoteField(table_keys[0]));
 		s.add(" = ");
-		addQuote(s,id);
+		cnx.addValue(s,id);
 		if( lock )
 			s.add(FOR_UPDATE);
 		return object(s.toString(),lock);
@@ -187,7 +187,7 @@ class Manager<T : Object> {
 					s.add(" IS NULL");
 				else {
 					s.add(" = ");
-					addQuote(s,d);
+					cnx.addValue(s,d);
 				}
 			}
 		if( first )
@@ -246,7 +246,7 @@ class Manager<T : Object> {
 				first = false;
 			else
 				s.add(", ");
-			addQuote(s,v);
+			cnx.addValue(s,v);
 		}
 		s.add(")");
 		execute(s.toString());
@@ -274,7 +274,7 @@ class Manager<T : Object> {
 					mod = true;
 				s.add(quoteField(f));
 				s.add(" = ");
-				addQuote(s,v);
+				cnx.addValue(s,v);
 				Reflect.setField(cache,f,v);
 			}
 		}
@@ -360,15 +360,6 @@ class Manager<T : Object> {
 		return f;
 	}
 
-	function addQuote( s : StringBuf, v : Dynamic ) {
-		if( untyped __call__("is_int", v) || __call__("is_null", v))
-			s.add(v);
-		else if( untyped __call__("is_bool", v) )
-			s.add(if( v ) 1 else 0);
-		else
-			s.add(cnx.quote(Std.string(v)));
-	}
-
 	function addKeys( s : StringBuf, x : {} ) {
 		var first = true;
 		for( k in table_keys ) {
@@ -381,7 +372,7 @@ class Manager<T : Object> {
 			var f = Reflect.field(x,k);
 			if( f == null )
 				throw ("Missing key "+k);
-			addQuote(s,f);
+			cnx.addValue(s,f);
 		}
 	}
 

+ 12 - 3
std/php/db/Mysql.hx

@@ -54,6 +54,15 @@ private class MysqlConnection implements Connection {
 		return "'" + untyped __call__("mysql_real_escape_string", s, c) + "'";
 	}
 
+	public function addValue( s : StringBuf, v : Dynamic ) {
+		if( untyped __call__("is_int", v) || __call__("is_null", v))
+			s.add(v);
+		else if( untyped __call__("is_bool", v) )
+			s.add(if( v ) 1 else 0);
+		else
+			s.add(quote(Std.string(v)));
+	}
+
 	public function lastInsertId() {
 		return untyped __call__("mysql_insert_id", c);
 	}
@@ -93,7 +102,7 @@ private class MysqlResultSet implements ResultSet {
 			return 0;
 		return untyped __call__("mysql_num_rows", __r);
 	}
-	
+
 	private var _nfields : Int;
 	private function getNFields() {
 		if(_nfields == null)
@@ -140,7 +149,7 @@ private class MysqlResultSet implements ResultSet {
 		cRow = untyped __call__("mysql_fetch_array", __r, __php__("MYSQL_NUM"));
 		return ! untyped __physeq__(cRow, false);
 	}
-	
+
 	public function next() : Dynamic {
 		if( cache != null ) {
 			var t = cache;
@@ -164,7 +173,7 @@ private class MysqlResultSet implements ResultSet {
 	}
 
 	public function getResult( n : Int ) : String {
-		if(cRow == null) 
+		if(cRow == null)
 			if(!fetchRow())
 				return null;
 		return cRow[n];

+ 9 - 0
std/php/db/Sqlite.hx

@@ -57,6 +57,15 @@ private class SqliteConnection implements Connection {
 		return "'" + untyped __call__("sqlite_escape_string", s) + "'";
 	}
 
+	public function addValue( s : StringBuf, v : Dynamic ) {
+		if( untyped __call__("is_int", v) || __call__("is_null", v))
+			s.add(v);
+		else if( untyped __call__("is_bool", v) )
+			s.add(if( v ) 1 else 0);
+		else
+			s.add(quote(Std.string(v)));
+	}
+
 	public function lastInsertId() {
 		return untyped __call__("sqlite_last_insert_rowid", c);
 	}