Current section

Files

Jump to
step_flow lib step_flow controllers workflow_controller.ex
Raw

lib/step_flow/controllers/workflow_controller.ex

defmodule StepFlow.WorkflowController do
use StepFlow, :controller
use BlueBird.Controller
require Logger
alias StepFlow.Repo
alias StepFlow.Step
alias StepFlow.Workflows
alias StepFlow.Workflows.Workflow
action_fallback(StepFlow.FallbackController)
def index(conn, params) do
workflows = Workflows.list_workflows(params)
conn
|> put_view(StepFlow.WorkflowView)
|> render("index.json", workflows: workflows)
end
def create(conn, workflow_params) do
case Workflows.create_workflow(workflow_params) do
{:ok, %Workflow{} = workflow} ->
Step.start_next(workflow)
StepFlow.Notification.send("new_workflow", %{workflow_id: workflow.id})
conn
|> put_status(:created)
|> put_view(StepFlow.WorkflowView)
|> render("show.json", workflow: workflow)
{:error, changeset} ->
conn
|> put_status(:unprocessable_entity)
|> put_view(StepFlow.ChangesetView)
|> render("error.json", changeset: changeset)
end
end
def show(conn, %{"id" => id}) do
workflow =
Workflows.get_workflow!(id)
|> Repo.preload(:jobs)
conn
|> put_view(StepFlow.WorkflowView)
|> render("show.json", workflow: workflow)
end
def get(conn, %{"identifier" => workflow_identifier} = _params) do
workflow =
case workflow_identifier do
_ -> %{}
end
conn
|> json(workflow)
end
def get(conn, _params) do
conn
|> json(%{})
end
def statistics(conn, params) do
scale = Map.get(params, "scale", "hour")
stats = Workflows.get_workflow_history(%{scale: scale})
conn
|> json(%{
data: stats
})
end
def update(conn, %{"id" => id, "workflow" => workflow_params}) do
workflow = Workflows.get_workflow!(id)
with {:ok, %Workflow{} = workflow} <- Workflows.update_workflow(workflow, workflow_params) do
conn
|> put_view(StepFlow.WorkflowView)
|> render("show.json", workflow: workflow)
end
end
def delete(conn, %{"id" => id}) do
workflow = Workflows.get_workflow!(id)
with {:ok, %Workflow{}} <- Workflows.delete_workflow(workflow) do
send_resp(conn, :no_content, "")
end
end
end