Extend FK metadata. :param fk_data: iterable of (table_name, column_name, referenced_table_name, referenced_column_name)
(self, fk_data: Iterable[tuple[str, str, str, str]])
| 1054 | table_meta[column_escaped] = values |
| 1055 | |
| 1056 | def extend_foreign_keys(self, fk_data: Iterable[tuple[str, str, str, str]]) -> None: |
| 1057 | """Extend FK metadata. |
| 1058 | |
| 1059 | :param fk_data: iterable of (table_name, column_name, referenced_table_name, referenced_column_name) |
| 1060 | """ |
| 1061 | metadata = self.dbmetadata["foreign_keys"] |
| 1062 | schema_meta = metadata.setdefault(self.dbname, {}) |
| 1063 | schema_meta.setdefault("tables", {}) |
| 1064 | schema_meta.setdefault("relations", []) |
| 1065 | for table, col, ref_table, ref_col in fk_data: |
| 1066 | table = self.escape_name(table) |
| 1067 | col = self.escape_name(col) |
| 1068 | ref_table = self.escape_name(ref_table) |
| 1069 | ref_col = self.escape_name(ref_col) |
| 1070 | schema_meta["tables"].setdefault(table, set()).add(ref_table) |
| 1071 | schema_meta["tables"].setdefault(ref_table, set()).add(table) |
| 1072 | schema_meta["relations"].append((table, col, ref_table, ref_col)) |
| 1073 | |
| 1074 | def _fk_join_conditions(self, tables: list[tuple[str | None, str, str]]) -> list[str]: |
| 1075 | """Return FK-based join condition strings for the tables currently in the query. |