Preparatory work

This commit is contained in:
Maciej 2026-02-21 13:05:47 +02:00
parent a22ba724df
commit 386a331956
Signed by: maciej
GPG key ID: 28243AF437E32F99
9 changed files with 217 additions and 1 deletions

View file

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

View file

@ -0,0 +1,14 @@
defmodule BirdyChatWeb.Api.Messages.JSON do
def render("create.json", %{message: message}) do
message
end
def render("error.json", %{changeset: changeset}) do
errors = Ecto.Changeset.traverse_errors(changeset, &get_error/1)
%{errors: errors}
end
def get_error({msg, opts}) do
Gettext.dgettext(BirdyChatWeb.Gettext, "errors", msg, opts)
end
end

View file

@ -20,6 +20,12 @@ defmodule BirdyChatWeb.Router do
get "/", PageController, :home
end
scope "/api", BirdyChatWeb.Api do
pipe_through [:api]
post "/messages", Messages.Controller, :create
end
# Other scopes may use custom stacks.
# scope "/api", BirdyChatWeb do
# pipe_through :api