]> git.jsancho.org Git - mojodb.git/blob - connection.py
New database scheme, storing key name inside tables for improving searching
[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, *args, **kwargs):
33         self._db_con = None
34
35     def __getattr__(self, db_name):
36         return Database(self, db_name)
37
38     def __getitem__(self, *args, **kwargs):
39         return self.__getattr__(*args, **kwargs)
40
41     def __repr__(self):
42         return "Connection(%s)" % self._db_con
43
44     def _get_databases(self):
45         return []
46
47     def database_names(self):
48         try:
49             return [str(x) for x in self._get_databases()]
50         except:
51             return []
52
53     def _get_tables(self, db_name):
54         return []
55
56     def collection_names(self, db_name):
57         try:
58             return list(set([str(x.split('$')[0]) for x in filter(lambda x: '$' in x, self._get_tables(db_name))]))
59         except:
60             return []
61
62     def _count_rows(self, db_name, table_name):
63         return 0
64
65     def _count(self, db_name, table_name):
66         try:
67             return self._count_rows(db_name, table_name + '$_id')
68         except:
69             return 0
70
71     def _create_database(self, db_name):
72         return None
73
74     def _create_table(self, db_name, table_name, fields):
75         # [{'name': 'id', 'type': 'char', 'size': 20, 'primary': True}]
76         return None
77
78     def _get_cursor(self, query):
79         return None
80
81     def _next(self, db_name, cursor):
82         return None
83
84     def _insert(self, db_name, table_name, values):
85         return None
86
87     def commit(self):
88         pass
89
90     def rollback(self):
91         pass