Packages
mozart
0.3.3
1.0.1
1.0.0
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.8
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Mozart is an Elixir based BPM platform. It provides a powerful and highly readable DSL for implementing executable business process models.
Current section
Files
Jump to
Current section
Files
lib/mozart/user_service.ex
defmodule Mozart.UserService do
@moduledoc """
Provides client applications with functionality related to users and groups. Much more
functionality to come.
"""
use GenServer
## Client API
@doc false
def start_link(_init_arg) do
GenServer.start_link(__MODULE__, nil, name: __MODULE__)
end
@doc """
Returns the groups that a user is a member of.
"""
def get_assigned_groups(user_name) do
GenServer.call(__MODULE__, {:get_assigned_groups, user_name})
end
@doc """
Adds a new user to the system.
"""
def insert_user(user) do
GenServer.cast(__MODULE__, {:insert_user, user})
end
@doc """
Given a user id, return detailed user info.
"""
def get_user(user_name) do
GenServer.call(__MODULE__, {:get_user, user_name})
end
## Callbacks
@doc false
def init(_init_arg) do
{:ok, %{users: []}}
end
@doc false
def handle_call({:get_user, user_name}, _from, state) do
user = Enum.find(state.users, fn user -> user.name == user_name end)
{:reply, user, state}
end
@doc false
def handle_call({:get_assigned_groups, user_name}, _from, state) do
user = Enum.find(state.users, fn user -> user.name == user_name end)
{:reply, user.groups, state}
end
@doc false
def handle_cast({:insert_user, user}, state) do
users = [user | state.users]
new_state = Map.put(state, :users, users)
{:noreply, new_state}
end
end