Packages
step_flow
1.6.1
1.9.0-rc2
1.9.0-rc1
1.9.0-rc0
1.8.2
1.8.1
1.8.1-rc8
1.8.1-rc7
1.8.1-rc6
1.8.1-rc5
1.8.1-rc4
1.8.1-rc3
1.8.1-rc2
1.8.1-rc1
1.8.1-rc0
1.8.0
1.8.0-rc3
1.8.0-rc2
1.8.0-rc1
1.8.0-rc0
1.7.3
1.7.3-rc4
1.7.3-rc3
1.7.3-rc2
1.7.3-rc1
1.7.3-rc0
1.7.2
1.7.2-rc4
1.7.2-rc3
1.7.2-rc2
1.7.2-rc1
1.7.2-rc0
1.7.1
1.7.0
1.7.0-rc1
1.7.0-rc0
1.6.1
1.6.1-rc1
1.6.1-rc0
1.6.0
1.6.0-rc9
1.6.0-rc8
1.6.0-rc7
1.6.0-rc6
1.6.0-rc5
1.6.0-rc4
1.6.0-rc3
1.6.0-rc20
1.6.0-rc2
1.6.0-rc19
1.6.0-rc18
1.6.0-rc17
1.6.0-rc16
1.6.0-rc15
1.6.0-rc14
1.6.0-rc13
1.6.0-rc12
1.6.0-rc11
1.6.0-rc10
1.6.0-rc1
1.5.0
1.5.0-rc1
1.4.2-rc2
1.4.2-rc1
1.4.1
1.4.1-rc1
1.4.0
1.4.0-rc4
1.4.0-rc3
1.4.0-rc2
1.4.0-rc1
1.3.1
1.3.0
1.3.0-rc
1.2.0
1.1.0
1.0.0
1.0.0-rc9
1.0.0-rc8
1.0.0-rc7
1.0.0-rc6
1.0.0-rc5
1.0.0-rc1
0.2.13
0.2.12
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.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
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.4
0.0.3
0.0.2
0.0.1
Step flow manager for Elixir applications
Current section
Files
Jump to
Current section
Files
lib/step_flow/models/rights/right.ex
defmodule StepFlow.Rights.Right do
@moduledoc """
The Right context.
"""
require Logger
import EctoEnum
defenum(RightEnum, [
"abort",
"create",
"delete",
"retry",
"stop",
"update",
"view"
])
defenum(EndpointEnum, [
"endpoint::jobs",
"endpoint::live_workers",
"endpoint::metrics",
"endpoint::notification_endpoint",
"endpoint::statistics",
"endpoint::workers",
"endpoint::worker_definitions",
"endpoint::workflow",
"endpoint::workflow_definition"
])
@enforce_keys [:entity, :action]
@derive {Jason.Encoder, only: [:entity, :action]}
defstruct [:entity, action: []]
use Ecto.Type
def type, do: :map
def cast(%{"entity" => entity, "action" => action})
when is_binary(entity) and is_list(action) do
{:ok, struct!(__MODULE__, %{entity: entity, action: action})}
end
def cast(%__MODULE__{} = right), do: {:ok, right}
def cast(_), do: :error
def load(%{"entity" => entity, "action" => action}) do
{:ok, struct!(__MODULE__, %{entity: entity, action: action})}
end
def load(data) when is_map(data) do
entity =
for {key, val} <- data.entity do
{String.to_existing_atom(key), val}
end
|> Enum.into(%{})
action =
for {key, val} <- data.action do
{String.to_existing_atom(key), val}
end
|> Enum.into(%{})
{:ok, struct!(__MODULE__, %{entity: entity, action: action})}
end
def dump(%__MODULE__{} = right), do: Ecto.Type.dump(:map, right)
def dump(_), do: :error
end