Skip to content
Snippets Groups Projects
Commit 7cb81eb3 authored by Leah Tacke genannt Unterberg's avatar Leah Tacke genannt Unterberg
Browse files

allow skipping of fk generation in sql_representation.py

parent 595951a9
Branches
No related tags found
No related merge requests found
......@@ -237,7 +237,8 @@ _view_generators: tuple[MitMDBViewsGenerator, ...] = (_gen_denormalized_views,)
def mk_sql_rep_schema(header: Header,
view_generators: Iterable[MitMDBViewsGenerator] | None = (_gen_denormalized_views,),
override_schema: SchemaName | None = None) -> SQLRepresentationSchema:
override_schema: SchemaName | None = None,
skip_fk_constraints: bool = False) -> SQLRepresentationSchema:
schema_name = override_schema if override_schema else SQL_REPRESENTATION_DEFAULT_SCHEMA
mitm_def = get_mitm_def(header.mitm)
meta = sa.MetaData(schema=schema_name)
......@@ -246,6 +247,7 @@ def mk_sql_rep_schema(header: Header,
type_tables: ConceptTypeTablesDict = {}
views: dict[str, sa.Table] = {}
base_schema_item_generators = (_gen_unique_constraint, _gen_pk_constraint, _gen_index,)
for concept in mitm_def.main_concepts:
concept_properties, concept_relations = mitm_def.get(concept)
......@@ -264,10 +266,11 @@ def mk_sql_rep_schema(header: Header,
'foreign': lambda: [(name, sa.Column(name, dt.sa_sql_type)) for _, resolved_fk in
mitm_def.resolve_foreign_types(concept).items() for name, dt in
resolved_fk.items()]
}, additional_column_generators=(_gen_within_concept_id_col,), schema_item_generators=(
_gen_unique_constraint, _gen_pk_constraint, _gen_index,), override_schema=schema_name)
}, additional_column_generators=(_gen_within_concept_id_col,), schema_item_generators=base_schema_item_generators, override_schema=schema_name)
concept_tables[concept] = t
type_table_schema_item_generators = base_schema_item_generators + (
_gen_foreign_key_constraints,) if not skip_fk_constraints else base_schema_item_generators
for he in header.header_entries:
he_concept = he.concept
if has_type_tables(header.mitm, he_concept):
......@@ -291,9 +294,7 @@ def mk_sql_rep_schema(header: Header,
'attributes': lambda: [(name, sa.Column(name, dt.sa_sql_type)) for name, dt in
zip(he.attributes, he.attribute_dtypes)],
}, additional_column_generators=(_gen_within_concept_id_col,),
schema_item_generators=(
_gen_unique_constraint, _gen_pk_constraint, _gen_index,
_gen_foreign_key_constraints),
schema_item_generators=type_table_schema_item_generators,
override_schema=schema_name)
if he_concept not in type_tables:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment