forked from felipecruz/exemplos
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path06_04_classes_relacoes.py
55 lines (46 loc) · 1.72 KB
/
06_04_classes_relacoes.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
class Relationship:
"""Classe que representa um relacionamento entre DataTables
Essa classe tem todas as informações que identificam um relacionamento
entre tabelas. Em qual coluna ele existe, de onde vem e pra onde vai.
"""
def __init__(self, name, _from, to, on):
"""Construtor
Args:
name: Nome
from: Tabela de onde sai
to: Tabela pra onde vai
on: instância de coluna onde existe
"""
self._name = name
self._from = _from
self._to = to
self._on = on
class DataTable:
def __init__(self, name):
self._name = name
self._columns = []
self._references = []
self._referenced = []
self._data = []
def add_column(self, name, kind, description=""):
column = Column(name, kind, description=description)
self._columns.append(column)
return column
def add_references(self, name, to, on):
"""Cria uma referencia dessa tabela para uma outra tabela
Args:
name: nome da relação
to: instância da tabela apontada
on: instância coluna em que existe a relação
"""
relationship = Relationship(name, self, to, on)
self._references.append(relationship)
def add_referenced(self, name, by, on):
"""Cria uma referência para outra tabela que aponta para essa.
Args:
name: nome da relação
by: instância da tabela que aponta para essa
on: instância coluna em que existe a relação
"""
relationship = Relationship(name, by, self, on)
self._referenced.append(relationship)