(entry)
| 937 | |
| 938 | |
| 939 | def build_foreign_key_map(entry): |
| 940 | cols_orig = entry["column_names_original"] |
| 941 | tables_orig = entry["table_names_original"] |
| 942 | |
| 943 | # rebuild cols corresponding to idmap in Schema |
| 944 | cols = [] |
| 945 | for col_orig in cols_orig: |
| 946 | if col_orig[0] >= 0: |
| 947 | t = tables_orig[col_orig[0]] |
| 948 | c = col_orig[1] |
| 949 | cols.append("__" + t.lower() + "." + c.lower() + "__") |
| 950 | else: |
| 951 | cols.append("__all__") |
| 952 | |
| 953 | def keyset_in_list(k1, k2, k_list): |
| 954 | for k_set in k_list: |
| 955 | if k1 in k_set or k2 in k_set: |
| 956 | return k_set |
| 957 | new_k_set = set() |
| 958 | k_list.append(new_k_set) |
| 959 | return new_k_set |
| 960 | |
| 961 | foreign_key_list = [] |
| 962 | foreign_keys = entry["foreign_keys"] |
| 963 | for fkey in foreign_keys: |
| 964 | key1, key2 = fkey |
| 965 | key_set = keyset_in_list(key1, key2, foreign_key_list) |
| 966 | key_set.add(key1) |
| 967 | key_set.add(key2) |
| 968 | |
| 969 | foreign_key_map = {} |
| 970 | for key_set in foreign_key_list: |
| 971 | sorted_list = sorted(list(key_set)) |
| 972 | midx = sorted_list[0] |
| 973 | for idx in sorted_list: |
| 974 | foreign_key_map[cols[idx]] = cols[midx] |
| 975 | |
| 976 | return foreign_key_map |
| 977 | |
| 978 | |
| 979 | def build_foreign_key_map_from_json(table): |
no test coverage detected