MCPcopy Create free account
hub / github.com/Vanderhoof/PyDBML / Database

Class Database

pydbml/database.py:19–207  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17
18
19class Database:
20 def __init__(
21 self,
22 sql_renderer: Type[BaseRenderer] = DefaultSQLRenderer,
23 dbml_renderer: Type[BaseRenderer] = DefaultDBMLRenderer,
24 allow_properties: bool = False
25 ) -> None:
26 self.sql_renderer = sql_renderer
27 self.dbml_renderer = dbml_renderer
28 self.tables: List['Table'] = []
29 self.table_dict: Dict[str, 'Table'] = {}
30 self.refs: List['Reference'] = []
31 self.enums: List['Enum'] = []
32 self.table_groups: List['TableGroup'] = []
33 self.sticky_notes: List['StickyNote'] = []
34 self.project: Optional['Project'] = None
35 self.allow_properties = allow_properties
36
37 def __repr__(self) -> str:
38 return f"<Database>"
39
40 def __getitem__(self, k: Union[int, str]) -> Table:
41 if isinstance(k, int):
42 return self.tables[k]
43 elif isinstance(k, str):
44 return self.table_dict[k]
45 else:
46 raise TypeError('indeces must be str or int')
47
48 def __iter__(self):
49 return iter(self.tables)
50
51 def _set_database(self, obj: Any) -> None:
52 obj.database = self
53
54 def _unset_database(self, obj: Any) -> None:
55 obj.database = None
56
57 def add(self, obj: Any) -> Any:
58 if isinstance(obj, Table):
59 return self.add_table(obj)
60 elif isinstance(obj, Reference):
61 return self.add_reference(obj)
62 elif isinstance(obj, Enum):
63 return self.add_enum(obj)
64 elif isinstance(obj, TableGroup):
65 return self.add_table_group(obj)
66 elif isinstance(obj, Project):
67 return self.add_project(obj)
68 elif isinstance(obj, StickyNote):
69 return self.add_sticky_note(obj)
70 else:
71 raise DatabaseValidationError(f'Unsupported type {type(obj)}.')
72
73 def add_table(self, obj: Table) -> Table:
74 if obj in self.tables:
75 raise DatabaseValidationError(f'{obj} is already in the database.')
76 if obj.full_name in self.table_dict:

Callers 15

test_add_tableMethod · 0.90
test_add_table_aliasMethod · 0.90
test_add_table_badMethod · 0.90
test_delete_tableMethod · 0.90
test_add_referenceMethod · 0.90
test_delete_referenceMethod · 0.90
test_add_enumMethod · 0.90
test_add_enum_badMethod · 0.90

Calls

no outgoing calls

Tested by 15

test_add_tableMethod · 0.72
test_add_table_aliasMethod · 0.72
test_add_table_badMethod · 0.72
test_delete_tableMethod · 0.72
test_add_referenceMethod · 0.72
test_delete_referenceMethod · 0.72
test_add_enumMethod · 0.72
test_add_enum_badMethod · 0.72