annotate examples/trac/trac/db/schema.py @ 39:93b4dcbafd7b trunk

Copy Trac to main branch.
author cmlenz
date Mon, 03 Jul 2006 18:53:27 +0000
parents
children
rev   line source
39
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
1 # -*- coding: utf-8 -*-
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
2 #
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
3 # Copyright (C) 2005 Edgewall Software
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
4 # Copyright (C) 2005 Christopher Lenz <cmlenz@gmx.de>
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
5 # All rights reserved.
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
6 #
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
7 # This software is licensed as described in the file COPYING, which
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
8 # you should have received as part of this distribution. The terms
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
9 # are also available at http://trac.edgewall.com/license.html.
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
10 #
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
11 # This software consists of voluntary contributions made by many
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
12 # individuals. For the exact contribution history, see the revision
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
13 # history and logs, available at http://projects.edgewall.com/trac/.
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
14 #
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
15 # Author: Christopher Lenz <cmlenz@gmx.de>
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
16
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
17
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
18 class Table(object):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
19 """Declare a table in a database schema."""
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
20
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
21 def __init__(self, name, key=[]):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
22 self.name = name
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
23 self.columns = []
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
24 self.indices = []
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
25 self.key = key
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
26 if isinstance(key, basestring):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
27 self.key = [key]
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
28
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
29 def __getitem__(self, objs):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
30 self.columns = [o for o in objs if isinstance(o, Column)]
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
31 self.indices = [o for o in objs if isinstance(o, Index)]
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
32 return self
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
33
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
34
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
35 class Column(object):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
36 """Declare a table column in a database schema."""
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
37
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
38 def __init__(self, name, type='text', size=None, unique=False,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
39 auto_increment=False):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
40 self.name = name
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
41 self.type = type
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
42 self.size = size
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
43 self.auto_increment = auto_increment
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
44
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
45
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
46 class Index(object):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
47 """Declare an index for a database schema."""
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
48
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
49 def __init__(self, columns):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
50 self.columns = columns
Copyright (C) 2012-2017 Edgewall Software