defmodule BirdyChatWeb.Api.Messages.Controller do use BirdyChatWeb, :controller def create(conn, params) do case BirdyChat.Message.validate(params) do {:ok, changeset} -> case BirdyChat.Dispatcher.dispatch(changeset) do :ok -> conn |> put_status(:created) |> render(:create, message: changeset.changes) {:error, error} -> conn |> put_status(:unprocessable_entity) |> render(:error, message: error) end {:error, changeset} -> conn |> put_status(:unprocessable_entity) |> render(:error, changeset: changeset) end end end