Example application using the new Registry
module in Elixir 1.4
See this blog post for more context.
git clone git@github.com:amokan/registry_sample.git
cd registry_sample
iex -S mix
From the blog post:
Imagine we have a scenario where we are selling widgets to customers. Our boss wants us to build a realtime UI that shows every account that has placed an order in the current day along with some basic info about each account. If an account doesn’t place another order within 24 hours, it should fall off the UI
The RegistrySample.AccountDynamicSupervisor
is a :one_for_one
dynamic supervisor that gives us a few helpful functions for creating new RegistrySample.Account
processes and indicating which processes are already running.
Let's create an account process for account_id
# 2 and account_id
# 10.
iex> RegistrySample.AccountDynamicSupervisor.find_or_create_process(2)
{:ok, 2}
iex> RegistrySample.AccountDynamicSupervisor.find_or_create_process(10)
{:ok, 2}
iex> RegistrySample.AccountDynamicSupervisor.get_all_account_widgets_ordered
[%{account_id: 2, widgets_sold: 1}, %{account_id: 10, widgets_sold: 1}]
Now we can say that account_id
# 10 ordered another widget, by just passing the account_id
iex> RegistrySample.Account.order_widget(10)
:ok
iex> RegistrySample.AccountDynamicSupervisor.get_all_account_widgets_ordered
[%{account_id: 2, widgets_sold: 1}, %{account_id: 10, widgets_sold: 2}]