diff --git a/latch/registry/table.py b/latch/registry/table.py index eb574f55..87ce62bf 100644 --- a/latch/registry/table.py +++ b/latch/registry/table.py @@ -486,14 +486,22 @@ def upsert_record(self, name: str, **values: RegistryPythonValue) -> None: cols = self.table.get_columns() db_vals: Dict[str, DBValue] = {} + errs: List[str] = [] for k, v in values.items(): col = cols.get(k) if col is None: raise NoSuchColumnError(k) - db_vals[k] = to_registry_literal( - v, col.upstream_type["type"], resolve_paths=False - ) + try: + db_vals[k] = to_registry_literal( + v, col.upstream_type["type"], resolve_paths=False + ) + except RegistryTransformerException as e: + # todo(ayush): add a registry_type -> pretty string fn so we aren't printing json here + errs.append(f"Error converting field {repr(k)} with value {repr(v)} to type {col.upstream_type['type']}: {e}") + + if len(errs) > 0: + raise RegistryTransformerException(f"Could not upsert record {name}:" + "\n".join(errs)) self._record_mutations.append(_TableRecordsUpsertData(name, db_vals))