Optimize the Nested Case condition

I want to know the optimized code for the following case condition.

          case job_opening.state == :public do
            true ->
              result = job.test_req
              case result do
                {:ok, _} ->
                          #same_good_cond
                {:error, _} ->
                          #same_bad_cond
              end
            false ->
               #same_good_cond
          end
        end

I don’t want to repeat code. Is there any way? Your response will be highly appreciable.

if match?({:ok, _}, job_opening.state == :public and job.test_req) do
  # good_cond
else
  # bad cond
end
1 Like
with :public <- job_opening.state,
     {:error, _} <- job.test_req do
  # bad_cond
else
  _ -> # good_cond
end
4 Likes

job_opening.state != :public should give good cond

1 Like

Updated above.

def job_ok?(:public, {:ok, _}),
  do: true

def job_ok?(:public, _job_test_req),
  do: false

def job_ok?(_job_opening_state, _job_test_req),
  do: true

...
  something =
    if job_ok?(job_opening.state, job.test_req) do
      # good expression
    else
      # bad expression
    end
2 Likes