(entry)
| 867 | |
| 868 | |
| 869 | def build_foreign_key_map(entry): |
| 870 | cols_orig = entry["column_names_original"] |
| 871 | tables_orig = entry["table_names_original"] |
| 872 | |
| 873 | # rebuild cols corresponding to idmap in Schema |
| 874 | cols = [] |
| 875 | for col_orig in cols_orig: |
| 876 | if col_orig[0] >= 0: |
| 877 | t = tables_orig[col_orig[0]] |
| 878 | c = col_orig[1] |
| 879 | cols.append("__" + t.lower() + "." + c.lower() + "__") |
| 880 | else: |
| 881 | cols.append("__all__") |
| 882 | |
| 883 | def keyset_in_list(k1, k2, k_list): |
| 884 | for k_set in k_list: |
| 885 | if k1 in k_set or k2 in k_set: |
| 886 | return k_set |
| 887 | new_k_set = set() |
| 888 | k_list.append(new_k_set) |
| 889 | return new_k_set |
| 890 | |
| 891 | foreign_key_list = [] |
| 892 | foreign_keys = entry["foreign_keys"] |
| 893 | for fkey in foreign_keys: |
| 894 | key1, key2 = fkey |
| 895 | key_set = keyset_in_list(key1, key2, foreign_key_list) |
| 896 | key_set.add(key1) |
| 897 | key_set.add(key2) |
| 898 | |
| 899 | foreign_key_map = {} |
| 900 | for key_set in foreign_key_list: |
| 901 | sorted_list = sorted(list(key_set)) |
| 902 | midx = sorted_list[0] |
| 903 | for idx in sorted_list: |
| 904 | foreign_key_map[cols[idx]] = cols[midx] |
| 905 | |
| 906 | return foreign_key_map |
| 907 | |
| 908 | |
| 909 | def build_foreign_key_map_from_json(table): |
no test coverage detected