]> git.jsancho.org Git - mojodb.git/blob - connection.py
Separate classes and functionality into various files
[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
24 class Connection(object):
25     def __init__(self, *args, **kwargs):
26         self._db_con = None
27
28     def __getattr__(self, db_name):
29         return Database(self, db_name)
30
31     def __getitem__(self, *args, **kwargs):
32         return self.__getattr__(*args, **kwargs)
33
34     def __repr__(self):
35         return "Connection(%s)" % self._db_con
36
37     def _get_databases(self):
38         return []
39
40     def database_names(self):
41         try:
42             return [unicode(x) for x in self._get_databases()]
43         except:
44             return []
45
46     def _get_tables(self, db_name):
47         return []
48
49     def collection_names(self, db_name):
50         try:
51             return list(set([unicode(x.split('$')[0]) for x in filter(lambda x: '$' in x, self._get_tables(db_name))]))
52         except:
53             return []
54
55     def _count_rows(self, db_name, table_name):
56         return 0
57
58     def _count(self, db_name, table_name):
59         try:
60             return self._count_rows(db_name, table_name + '$_id')
61         except:
62             return 0
63
64     def _create_database(self, db_name):
65         return None
66
67     def _create_table(self, db_name, table_name, fields):
68         # [{'name': 'id', 'type': 'char', 'size': 20, 'primary': True}]
69         return None
70
71     def _get_cursor(self, db_name, query):
72         # {'select': [('t1$_id', 'id'), {'select': [('t1$c1', 'value')], 'from': ['t1$c1'], 'where': [(('t1$c1', 'id'), '=', ('t1$_id', 'id'))]}], 'from': ['t1$_id']}
73         return None
74
75     def _next(self, cursor):
76         return None
77
78     def _insert(self, db_name, table_name, values):
79         return None
80
81     def commit(self):
82         pass
83
84     def rollback(self):
85         pass