Author: phd
Date: 2005-11-14 18:24:35 +0000 (Mon, 14 Nov 2005)
New Revision: 1261
Added:
home/phd/SQLObject/paramstyles/sqlobject/tests/test_sqllist.py
Modified:
home/phd/SQLObject/paramstyles/sqlobject/sqlbuilder.py
Log:
Started to add __sqllist__() method; added two simple tests.
Modified: home/phd/SQLObject/paramstyles/sqlobject/sqlbuilder.py
===================================================================
--- home/phd/SQLObject/paramstyles/sqlobject/sqlbuilder.py 2005-11-14 16:31:08 UTC (rev 1260)
+++ home/phd/SQLObject/paramstyles/sqlobject/sqlbuilder.py 2005-11-14 18:24:35 UTC (rev 1261)
@@ -89,6 +89,31 @@
return expr
########################################
+## SQL Query lists
+########################################
+
+class SQLList(object):
+ def __init__(self, query_list):
+ self.query_list = query_list
+
+ def __sqlrepr__(self, db):
+ repr_list = [sqlrepr(part, db) for part in self.query_list]
+ return ''.join(repr_list)
+
+ def __sqllist__(self):
+ return self.query_list
+
+class SQLListMixin(object):
+ def __sqllist__(self):
+ return self.__sqlrepr__(None)
+
+def sqllist(obj):
+ if isinstance(obj, types.StringTypes):
+ return [obj]
+ else:
+ return obj.__sqllist__()
+
+########################################
## Expression generation
########################################
@@ -231,6 +256,8 @@
self.expr2 = expr2
def __sqlrepr__(self, db):
return "(%s %s %s)" % (sqlrepr(self.expr1, db), self.op, sqlrepr(self.expr2, db))
+ def __sqllist__(self):
+ return ["("] + sqllist(self.expr1) + [self.op] + sqllist(self.expr2) + [")"]
def components(self):
return [self.expr1, self.expr2]
def execute(self, executor):
@@ -263,6 +290,8 @@
self.args = args
def __sqlrepr__(self, db):
return "%s%s" % (sqlrepr(self.expr, db), sqlrepr(self.args, db))
+ def __sqllist__(self):
+ return sqllist(self.expr) + sqllist(self.args)
def components(self):
return [self.expr] + list(self.args)
def execute(self, executor):
@@ -276,6 +305,8 @@
self.expr = expr
def __sqlrepr__(self, db):
return "%s %s" % (self.prefix, sqlrepr(self.expr, db))
+ def __sqllist__(self):
+ return sqllist(self.prefix) + [' '] + sqllist(self.expr, db)
def components(self):
return [self.expr]
def execute(self, executor):
@@ -294,12 +325,14 @@
self.const = const
def __sqlrepr__(self, db):
return self.const
+ def __sqllist__(self):
+ return sqllist(self.const)
def execute(self, executor):
raise ValueError, "I don't yet know how to execute SQL constants"
registerConverter(SQLConstant, SQLExprConverter)
-class SQLTrueClauseClass(SQLExpression):
+class SQLTrueClauseClass(SQLExpression, SQLListMixin):
def __sqlrepr__(self, db):
return "1 = 1"
def execute(self, executor):
@@ -313,7 +346,7 @@
## Namespaces
########################################
-class Field(SQLExpression):
+class Field(SQLExpression, SQLListMixin):
def __init__(self, tableName, fieldName):
self.tableName = tableName
self.fieldName = fieldName
@@ -331,7 +364,7 @@
registerConverter(SQLObjectField, SQLExprConverter)
-class Table(SQLExpression):
+class Table(SQLExpression, SQLListMixin):
FieldClass = Field
def __init__(self, tableName):
@@ -384,7 +417,7 @@
## Table aliases
########################################
-class AliasField(Field):
+class AliasField(Field, SQLListMixin):
def __init__(self, tableName, fieldName, alias):
Field.__init__(self, tableName, fieldName)
self.alias = alias
@@ -431,18 +464,6 @@
########################################
-## SQL Query lists
-########################################
-
-class SQLList(object):
- def __init__(self, query_list):
- self.query_list = query_list
-
- def __sqlrepr__(self, db):
- query_list = [sqlrepr(part, db) for part in self.query_list]
- return ''.join(query_list)
-
-########################################
## SQL Statements
########################################
Added: home/phd/SQLObject/paramstyles/sqlobject/tests/test_sqllist.py
===================================================================
--- home/phd/SQLObject/paramstyles/sqlobject/tests/test_sqllist.py 2005-11-14 16:31:08 UTC (rev 1260)
+++ home/phd/SQLObject/paramstyles/sqlobject/tests/test_sqllist.py 2005-11-14 18:24:35 UTC (rev 1261)
@@ -0,0 +1,7 @@
+from sqlobject.sqlbuilder import *
+
+def test_simple_string():
+ assert sqllist('') == ['']
+
+def test_sql_op():
+ assert sqllist(SQLOp('+', '1', '2')) == ['(', '1', '+', '2', ')']
|