Current section

Files

Jump to
storex lib storex.ex
Raw

lib/storex.ex

defmodule Storex do
use Application
@doc false
def start(_type, _args) do
import Supervisor.Spec, warn: false
children = [
{Storex.Registry.ETS, []},
{Storex.Supervisor, []}
]
Supervisor.start_link(children, strategy: :one_for_one, name: __MODULE__)
end
@doc """
Mutate store from elixir.
Call mutation callback in store synchronously:
```elixir
Storex.mutate("d9ez7fgkp96", "ExampleApp.Store", "reload", ["user_id"])
```
"""
def mutate(session, store, mutation, payload \\ [])
when is_binary(session) and is_binary(store) do
Storex.Registry.session_pid(session)
|> case do
:undefined -> {:error, "Session #{session} not found."}
pid -> Kernel.send(pid, {:mutate, store, mutation, payload})
end
end
end