{Ring, [{:local, ring}, ring_data, []]}
]
- Supervisor.init(children, strategy: :one_for_one, max_restarts: 5, max_seconds: 10)
+ Supervisor.init(children, strategy: :rest_for_one, max_restarts: 5, max_seconds: 10)
end
def db_name(name), do: Module.concat([name, DB])
GenServer.cast(name, {:upsert, key, value, fun})
end
- def batch(name, batch, chunk \\ 100, fun \\ &{elem(&1, 0), Enum.uniq([&2 | elem(&1, 1)])}) do
+ def batch(name, batch, chunk \\ 100, fun \\ &{elem(&1, 0), &2}) do
GenServer.cast(name, {:batch, batch, chunk, fun})
end
defp do_upsert(db, key, value, fun) do
case :ets.lookup(db, key) do
[] ->
- :ets.insert(db, {key, [value]})
+ v =
+ case value do
+ val when is_list(val) -> val
+ val -> [val]
+ end
+
+ :ets.insert(db, {key, v})
[{_, val} = old] when is_list(val) ->
new = fun.(old, value)