diff --git a/pgsync/base.py b/pgsync/base.py index 3e13c0b8..55cbe224 100644 --- a/pgsync/base.py +++ b/pgsync/base.py @@ -80,31 +80,31 @@ def data(self) -> dict: def foreign_key_constraint(self, model) -> dict: """ { - 'public.customer': { referred table with a fully qualified name + 'public.customer': [{ referred table with a fully qualified name 'local': 'customer_id', 'remote': 'id', 'value': 1 - }, - 'public.group': { referred table with a fully qualified name + }], + 'public.group': [{ referred table with a fully qualified name 'local': 'group_id', 'remote': 'id', 'value': 1 - } + }] } """ constraints: dict = {} for foreign_key in model.foreign_keys: referred_table: str = str(foreign_key.constraint.referred_table) - constraints.setdefault(referred_table, {}) + constraints.setdefault(referred_table, []) if foreign_key.constraint.column_keys: if foreign_key.constraint.column_keys[0] in self.data: - constraints[referred_table] = { + constraints[referred_table].append({ "local": foreign_key.constraint.column_keys[0], "remote": foreign_key.column.name, "value": self.data[ foreign_key.constraint.column_keys[0] ], - } + }) return constraints diff --git a/pgsync/sync.py b/pgsync/sync.py index 0be437b5..54b8f7f7 100644 --- a/pgsync/sync.py +++ b/pgsync/sync.py @@ -518,13 +518,12 @@ def _through_node_resolver( """ foreign_key_constraint = payload.foreign_key_constraint(node.model) if self.tree.root.name in foreign_key_constraint: - filters.append( - { - foreign_key_constraint[self.tree.root.name][ - "remote" - ]: foreign_key_constraint[self.tree.root.name]["value"] - } - ) + for constraint in foreign_key_constraint[self.tree.root.name]: + filters.append( + { + constraint["remote"]: constraint["value"] + } + ) return filters def _insert_op(