lib/step_flow/controllers/worker_definition_controller.ex

defmodule StepFlow.WorkerDefinitionController do
  use StepFlow, :controller

  alias StepFlow.WorkerDefinitions
  alias StepFlow.WorkerDefinitions.WorkerDefinition

  action_fallback(StepFlow.FallbackController)

  def index(conn, params) do
    worker_definitions = WorkerDefinitions.list_worker_definitions(params)

    conn
    |> put_view(StepFlow.WorkerDefinitionView)
    |> render("index.json", worker_definitions: worker_definitions)
  end

  def create(conn, workflow_params) do
    case WorkerDefinitions.create_worker_definition(workflow_params) do
      {:ok, %WorkerDefinition{} = worker_definition} ->
        conn
        |> put_status(:created)
        |> put_view(StepFlow.WorkerDefinitionView)
        |> render("show.json", worker_definition: worker_definition)

      {:error, changeset} ->
        conn
        |> put_status(:unprocessable_entity)
        |> put_view(StepFlow.ChangesetView)
        |> render("error.json", changeset: changeset)
    end
  end

  def show(conn, %{"id" => id}) do
    worker_definition = WorkerDefinitions.get_worker_definition!(id)

    conn
    |> put_view(StepFlow.WorkerDefinitionView)
    |> render("show.json", worker_definition: worker_definition)
  end
end