Skip to content

Instantly share code, notes, and snippets.

@rodocite
Last active June 17, 2017 11:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rodocite/9bee1842a0cfa62a172004ba8f72198f to your computer and use it in GitHub Desktop.
Save rodocite/9bee1842a0cfa62a172004ba8f72198f to your computer and use it in GitHub Desktop.
ETS
defmodule Users do
@users_json "./lib/ets.json"
def hydrate_ets do
@users_json
|> File.read
|> case do
{:ok, file} ->
file
|> Poison.decode!
|> insert_records
_ ->
IO.puts("Could not read file.")
end
end
def find(user) do
:ets.lookup(:users, user)
|> case do
[] ->
:record_not_found
record ->
[data | _] = record
%{user => elem(data, 1)}
end
end
def delete(user) do
:ets.delete(:users, user)
find(user)
|> case do
:record_not_found ->
{:ok, "Record has been deleted"}
_ ->
{:error, "Something went wrong."}
end
end
defp insert_records(json) do
:ets.new(:users, [:set, :protected, :named_table])
json["data"]
|> Enum.each(&(:ets.insert(:users, &1)))
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment