in src/databao_context_engine/plugins/databases/table_builder.py [0:0]
def apply_foreign_keys(self, fk_cols: list[dict] | None) -> None:
fk_groups = group_rows(fk_cols, ("table_name", "constraint_name"))
by_table: dict[str, list[ForeignKey]] = defaultdict(list)
for (table_name, cname), grp in fk_groups.items():
grp.sort(key=lambda r: sort_position_by_key(r, "position"))
first = grp[0]
ref_schema = first.get("ref_schema")
ref_table = first.get("ref_table")
referenced = f"{ref_schema}.{ref_table}" if ref_schema and ref_table else ""
by_table[table_name].append(
ForeignKey(
name=cname,
mapping=[ForeignKeyColumnMap(from_column=r["from_column"], to_column=r["to_column"]) for r in grp],
referenced_table=referenced,
on_update=first.get("on_update"),
on_delete=first.get("on_delete"),
enforced=coerce_bool(first.get("enforced"), default=True),
validated=coerce_bool(first.get("validated"), default=True),
)
)
for table_name, fks in by_table.items():
self.get_or_create_table(table_name).foreign_keys = fks