瀏覽代碼

Handle insertion error

theenglishway (time) 4 年之前
父節點
當前提交
cd89e47cf1
共有 1 個文件被更改,包括 8 次插入3 次删除
  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