maps = Enum.map(hashtag_records, &%{hashtag_id: &1.id, object_id: object.id})
expected_rows = length(hashtag_records)
- with {^expected_rows, _} <- Repo.insert_all("hashtags_objects", maps) do
- object.id
- else
+ base_error =
+ "ERROR when inserting #{expected_rows} hashtags_objects for obj. #{object.id}"
+
+ try do
+ with {^expected_rows, _} <- Repo.insert_all("hashtags_objects", maps) do
+ object.id
+ else
+ e ->
+ Logger.error("#{base_error}: #{inspect(e)}")
+ Repo.rollback(object.id)
+ end
+ rescue
e ->
- error =
- "ERROR when inserting #{expected_rows} hashtags_objects " <>
- "for object #{object.id}: #{inspect(e)}"
-
- Logger.error(error)
+ Logger.error("#{base_error}: #{inspect(e)}")
Repo.rollback(object.id)
end
else