]> git.jsancho.org Git - mojodb.git/blobdiff - connection.py
Savepoints to protect integrity of documents
[mojodb.git] / connection.py
index ca67b9e297cf4e1422bee2a8885a05a04d64379e..c3f5647bd0a63d8c6aba237e3e157679581a1943 100644 (file)
 ##############################################################################
 
 from database import Database
+import dbutils
 
 class Connection(object):
-    def __init__(self, *args, **kwargs):
-        self._db_con = None
+    Query = dbutils.Query
+    Field = dbutils.Field
+    Table = dbutils.Table
+    Constraint = dbutils.Constraint
+    Literal = dbutils.Literal
+
+    def __init__(self, serializer=None, *args, **kwargs):
+        if serializer is None:
+            import msgpack
+            self.serializer = msgpack
+        else:
+            self.serializer = serializer
 
     def __getattr__(self, db_name):
         return Database(self, db_name)
@@ -39,7 +50,7 @@ class Connection(object):
 
     def database_names(self):
         try:
-            return [unicode(x) for x in self._get_databases()]
+            return [str(x) for x in self._get_databases()]
         except:
             return []
 
@@ -48,7 +59,7 @@ class Connection(object):
 
     def collection_names(self, db_name):
         try:
-            return list(set([unicode(x.split('$')[0]) for x in filter(lambda x: '$' in x, self._get_tables(db_name))]))
+            return list(set([str(x.split('$')[0]) for x in filter(lambda x: '$' in x, self._get_tables(db_name))]))
         except:
             return []
 
@@ -68,11 +79,10 @@ class Connection(object):
         # [{'name': 'id', 'type': 'char', 'size': 20, 'primary': True}]
         return None
 
-    def _get_cursor(self, db_name, query):
-        # {'select': [('t1$_id', 'id'), {'select': [('t1$c1', 'value')], 'from': ['t1$c1'], 'where': [(('t1$c1', 'id'), '=', ('t1$_id', 'id'))]}], 'from': ['t1$_id']}
+    def _get_cursor(self, query):
         return None
 
-    def _next(self, cursor):
+    def _next(self, db_name, cursor):
         return None
 
     def _insert(self, db_name, table_name, values):
@@ -83,3 +93,12 @@ class Connection(object):
 
     def rollback(self):
         pass
+
+    def savepoint(self, name):
+        pass
+
+    def commit_savepoint(self, name):
+        pass
+
+    def rollback_savepoint(self, name):
+        pass