Skip to content

saiberz/registry_sample

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RegistrySample

Example application using the new Registry module in Elixir 1.4

See this blog post for more context.

The Basics

Clone the Repo

git clone git@github.com:amokan/registry_sample.git

Run the sample in IEX

cd registry_sample
iex -S mix

Scenario

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

RegistrySample.AccountSupervisor

The RegistrySample.AccountSupervisor is a :simple_one_for_one 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.AccountSupervisor.find_or_create_process(2)
{:ok, 2}

iex> RegistrySample.AccountSupervisor.find_or_create_process(10)
{:ok, 2}

iex> RegistrySample.AccountSupervisor.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.AccountSupervisor.get_all_account_widgets_ordered
[%{account_id: 2, widgets_sold: 1}, %{account_id: 10, widgets_sold: 2}]

About

Example application using the new Registry module in Elixir 1.4.0

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Elixir 100.0%