]> git.jsancho.org Git - mojodb.git/blob - connection.py
Savepoints to protect integrity of documents
[mojodb.git] / connection.py
1 # -*- coding: utf-8 -*-
2 ##############################################################################
3 #
4 #    mojo, a Python library for implementing document based databases
5 #    Copyright (C) 2013-2014 by Javier Sancho Fernandez <jsf at jsancho dot org>
6 #
7 #    This program is free software: you can redistribute it and/or modify
8 #    it under the terms of the GNU General Public License as published by
9 #    the Free Software Foundation, either version 3 of the License, or
10 #    (at your option) any later version.
11 #
12 #    This program is distributed in the hope that it will be useful,
13 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
14 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 #    GNU General Public License for more details.
16 #
17 #    You should have received a copy of the GNU General Public License
18 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
19 #
20 ##############################################################################
21
22 from database import Database
23 import dbutils
24
25 class Connection(object):
26     Query = dbutils.Query
27     Field = dbutils.Field
28     Table = dbutils.Table
29     Constraint = dbutils.Constraint
30     Literal = dbutils.Literal
31
32     def __init__(self, serializer=None, *args, **kwargs):
33         if serializer is None:
34             import msgpack
35             self.serializer = msgpack
36         else:
37             self.serializer = serializer
38
39     def __getattr__(self, db_name):
40         return Database(self, db_name)
41
42     def __getitem__(self, *args, **kwargs):
43         return self.__getattr__(*args, **kwargs)
44
45     def __repr__(self):
46         return "Connection(%s)" % self._db_con
47
48     def _get_databases(self):
49         return []
50
51     def database_names(self):
52         try:
53             return [str(x) for x in self._get_databases()]
54         except:
55             return []
56
57     def _get_tables(self, db_name):
58         return []
59
60     def collection_names(self, db_name):
61         try:
62             return list(set([str(x.split('$')[0]) for x in filter(lambda x: '$' in x, self._get_tables(db_name))]))
63         except:
64             return []
65
66     def _count_rows(self, db_name, table_name):
67         return 0
68
69     def _count(self, db_name, table_name):
70         try:
71             return self._count_rows(db_name, table_name + '$_id')
72         except:
73             return 0
74
75     def _create_database(self, db_name):
76         return None
77
78     def _create_table(self, db_name, table_name, fields):
79         # [{'name': 'id', 'type': 'char', 'size': 20, 'primary': True}]
80         return None
81
82     def _get_cursor(self, query):
83         return None
84
85     def _next(self, db_name, cursor):
86         return None
87
88     def _insert(self, db_name, table_name, values):
89         return None
90
91     def commit(self):
92         pass
93
94     def rollback(self):
95         pass
96
97     def savepoint(self, name):
98         pass
99
100     def commit_savepoint(self, name):
101         pass
102
103     def rollback_savepoint(self, name):
104         pass