Parcourir la source

Handle insertion error

theenglishway (time) il y a 4 ans
Parent
commit
cd89e47cf1
1 fichiers modifiés avec 8 ajouts et 3 suppressions
  1. 8 3
      lib/vaccins/location_store.ex

+ 8 - 3
lib/vaccins/location_store.ex

@@ -79,7 +79,9 @@ defmodule Vaccins.LocationStore do
   def build_location(l = %Location{}), do: l |> Location.set_id() |> Location.build_query()
 
   def add_location(params) do
-    with {:ok, raw_location} <- params |> LocationRaw.changeset() |> apply_action(:insert),
+    cs = params |> LocationRaw.changeset()
+
+    with {:ok, raw_location} <- cs |> apply_action(:insert),
          processed <-
            %Location{
              name: raw_location.name,
@@ -88,7 +90,10 @@ defmodule Vaccins.LocationStore do
              provider: Doctolib
            }
            |> build_location,
-         true <- :dets.insert_new(@name, {processed.id, processed}),
-         do: :ok
+         true <- :dets.insert_new(@name, {processed.id, processed}) do
+      :ok
+    else
+      false -> cs |> add_error(:name, "error on insertion", []) |> apply_action(:insert)
+    end
   end
 end