Packages
step_flow
1.7.2-rc1
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/controllers/black_list.ex
defmodule StepFlow.Controllers.BlackList do
require Logger
import Ecto.Query, warn: false
alias StepFlow.Amqp.CommonEmitter
alias StepFlow.Jobs.Job
alias StepFlow.Jobs.Status
alias StepFlow.NotificationHooks.NotificationHookManager
alias StepFlow.Repo
@moduledoc false
def get! do
from(job in Job, where: job.in_black_list == true, order_by: [desc: :id])
|> Repo.all()
|> Enum.map(fn job -> job.id end)
|> Enum.sort()
end
def add!(job_id) when is_bitstring(job_id) do
{job_id, _} = Integer.parse(job_id)
add!(job_id)
end
def add!(job_id) do
job = StepFlow.Jobs.get_job!(job_id)
job
|> Job.changeset(%{in_black_list: true})
|> Repo.update!()
get!()
end
def add_and_notify!(job_id) do
black_list = add!(job_id)
CommonEmitter.publish(
"",
get_json_add_message(job_id),
[headers: [broadcast: "true"]],
"direct_messaging"
)
black_list
end
def contains?(job_id) when is_bitstring(job_id) do
{job_id, _} = Integer.parse(job_id)
contains?(job_id)
end
def contains?(job_id) do
get!()
|> Enum.any?(fn id -> id == job_id end)
end
def delete!(job_id) when is_bitstring(job_id) do
{job_id, _} = Integer.parse(job_id)
delete!(job_id)
end
def delete!(job_id) do
job = StepFlow.Jobs.get_job!(job_id)
job
|> Job.changeset(%{in_black_list: false})
|> Repo.update!()
{:ok, _status} = Status.set_job_status(job_id, :dropped)
NotificationHookManager.notification_from_job(job_id)
get!()
end
def delete_and_notify!(job_id) do
black_list = delete!(job_id)
CommonEmitter.publish(
"",
get_json_delete_message(job_id),
[headers: [broadcast: "true"]],
"direct_messaging"
)
black_list
end
def get_sync_message do
%{
type: "sync_black_list"
}
end
def get_json_sync_message do
Poison.encode!(get_sync_message())
end
def get_request_message do
%{
type: "get_black_list"
}
end
def get_json_request_message do
Poison.encode!(get_request_message())
end
def get_add_message(job_id) when is_bitstring(job_id) do
{job_id, _} = Integer.parse(job_id)
get_add_message(job_id)
end
def get_add_message(job_id) do
%{
type: "add_to_black_list",
job_id: job_id
}
end
def get_json_add_message(job_id) do
Poison.encode!(get_add_message(job_id))
end
def get_delete_message(job_id) when is_bitstring(job_id) do
{job_id, _} = Integer.parse(job_id)
get_delete_message(job_id)
end
def get_delete_message(job_id) do
%{
type: "delete_from_black_list",
job_id: job_id
}
end
def get_json_delete_message(job_id) do
Poison.encode!(get_delete_message(job_id))
end
end