diff --git a/lib/customer_service_web/controllers/customer.ex b/lib/customer_service_web/controllers/customer.ex index f29f865..c6fe293 100644 --- a/lib/customer_service_web/controllers/customer.ex +++ b/lib/customer_service_web/controllers/customer.ex @@ -218,29 +218,10 @@ defmodule CustomerServiceWeb.CustomerController do end end - defp dispatch_and_return(conn, command, %CustomerId{} = customer_id) do + defp dispatch_and_return(conn, command, %CustomerId{org_id: org_id} = customer_id) do case CustomerService.CommandedApp.dispatch(command, consistency: :strong) do :ok -> - case CustomerQueries.get_customer(to_string(customer_id)) do - {:ok, customer} -> - conn |> put_status(:ok) |> json(%{data: customer_json(customer)}) - - {:error, :not_found} -> - conn - |> put_status(:internal_server_error) - |> json(%{error: "customer created but not found in projection"}) - end - - {:error, reason} -> - conn |> put_status(:unprocessable_entity) |> json(%{error: inspect(reason)}) - end - end - - defp dispatch_and_return(conn, command, customer_id_string) - when is_binary(customer_id_string) do - case CustomerService.CommandedApp.dispatch(command, consistency: :strong) do - :ok -> - case CustomerQueries.get_customer(customer_id_string) do + case CustomerQueries.get_customer(org_id, to_string(customer_id)) do {:ok, customer} -> conn |> put_status(:ok) |> json(%{data: customer_json(customer)}) diff --git a/lib/customer_service_web/controllers/lead.ex b/lib/customer_service_web/controllers/lead.ex index 9dd84a1..0d678c8 100644 --- a/lib/customer_service_web/controllers/lead.ex +++ b/lib/customer_service_web/controllers/lead.ex @@ -176,28 +176,10 @@ defmodule CustomerServiceWeb.LeadController do end end - defp dispatch_and_return(conn, command, %LeadId{} = lead_id) do + defp dispatch_and_return(conn, command, %LeadId{org_id: org_id} = lead_id) do case CustomerService.CommandedApp.dispatch(command, consistency: :strong) do :ok -> - case LeadQueries.get_lead(to_string(lead_id)) do - {:ok, lead} -> - conn |> put_status(:ok) |> json(%{data: lead_json(lead)}) - - {:error, :not_found} -> - conn - |> put_status(:internal_server_error) - |> json(%{error: "lead created but not found in projection"}) - end - - {:error, reason} -> - conn |> put_status(:unprocessable_entity) |> json(%{error: inspect(reason)}) - end - end - - defp dispatch_and_return(conn, command, lead_id_string) when is_binary(lead_id_string) do - case CustomerService.CommandedApp.dispatch(command, consistency: :strong) do - :ok -> - case LeadQueries.get_lead(lead_id_string) do + case LeadQueries.get_lead(org_id, to_string(lead_id)) do {:ok, lead} -> conn |> put_status(:ok) |> json(%{data: lead_json(lead)})