From 7cb81eb337aae4d44baa68e66964852747e0579e Mon Sep 17 00:00:00 2001 From: Leah Tacke genannt Unterberg <leah.tgu@pads.rwth-aachen.de> Date: Wed, 23 Apr 2025 16:54:59 +0200 Subject: [PATCH] allow skipping of fk generation in sql_representation.py --- mitm_tooling/representation/sql_representation.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mitm_tooling/representation/sql_representation.py b/mitm_tooling/representation/sql_representation.py index fdb691e..6ab8a3d 100644 --- a/mitm_tooling/representation/sql_representation.py +++ b/mitm_tooling/representation/sql_representation.py @@ -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: -- GitLab