@@ -107,15 +107,30 @@ def run_direct_relational_import(
107107 description = f"Pass 2/2: Updating relations for [bold]{ field } [/bold]" ,
108108 )
109109 log .info (f"Running 'Direct Relational Import' for field '{ field } '..." )
110- relational_table = strategy_details ["relation_table" ]
111- owning_model_fk = strategy_details ["relation_field" ]
112- related_model_fk = strategy_details ["relation" ]
110+
111+ # Check if required keys exist
112+ relational_table = strategy_details .get ("relation_table" )
113+ owning_model_fk = strategy_details .get ("relation_field" )
114+ related_model_fk = strategy_details .get ("relation" )
115+
116+ # If we don't have the required information, we can't proceed with this strategy
117+ if not relational_table or not owning_model_fk :
118+ log .error (
119+ f"Cannot run direct relational import for field '{ field } ': "
120+ f"Missing relation_table or relation_field in strategy details."
121+ )
122+ return None
113123
114124 # 1. Prepare the owning model's IDs
115125 owning_df = pl .DataFrame ({"external_id" : id_map .keys (), "db_id" : id_map .values ()})
116126
117127 # 2. Prepare the related model's IDs using the resolver
118128 all_related_ext_ids = source_df .get_column (field ).str .split ("," ).explode ()
129+ if related_model_fk is None :
130+ log .error (
131+ f"Cannot resolve related IDs: Missing relation in strategy details for field '{ field } '."
132+ )
133+ return None
119134 related_model_df = _resolve_related_ids (
120135 config , related_model_fk , all_related_ext_ids
121136 )
@@ -170,15 +185,30 @@ def run_write_tuple_import(
170185 description = f"Pass 2/2: Updating relations for [bold]{ field } [/bold]" ,
171186 )
172187 log .info (f"Running 'Write Tuple' for field '{ field } '..." )
173- relational_table = strategy_details ["relation_table" ]
174- owning_model_fk = strategy_details ["relation_field" ]
175- related_model_fk = strategy_details ["relation" ]
188+
189+ # Check if required keys exist
190+ relational_table = strategy_details .get ("relation_table" )
191+ owning_model_fk = strategy_details .get ("relation_field" )
192+ related_model_fk = strategy_details .get ("relation" )
193+
194+ # If we don't have the required information, we can't proceed with this strategy
195+ if not relational_table or not owning_model_fk :
196+ log .error (
197+ f"Cannot run write tuple import for field '{ field } ': "
198+ f"Missing relation_table or relation_field in strategy details."
199+ )
200+ return False
176201
177202 # 1. Prepare the owning model's IDs
178203 owning_df = pl .DataFrame ({"external_id" : id_map .keys (), "db_id" : id_map .values ()})
179204
180205 # 2. Prepare the related model's IDs using the resolver
181206 all_related_ext_ids = source_df .get_column (field ).str .split ("," ).explode ()
207+ if related_model_fk is None :
208+ log .error (
209+ f"Cannot resolve related IDs: Missing relation in strategy details for field '{ field } '."
210+ )
211+ return False
182212 related_model_df = _resolve_related_ids (
183213 config , related_model_fk , all_related_ext_ids
184214 )
0 commit comments