Add the API to show the Links model or models.

This commit is contained in:
2023-07-28 20:04:45 +03:00
parent 09e36646bf
commit 669d8fcefa
6 changed files with 90 additions and 3 deletions
@@ -0,0 +1,21 @@
defmodule LinkShortenerWeb.Api.V1.LinksView do
use LinkShortenerWeb, :view
alias LinkShortenerWeb.Api.V1.LinksView
def render("index.json", %{links: links}) do
%{data: render_many(links, LinksView, "link.json")}
end
def render("show.json", %{links: link}) do
%{data: render_one(link, LinksView, "link.json")}
end
def render("link.json", %{links: link}) do
%{
id: link.id,
name: link.name,
url: link.url,
shorten: link.shorten
}
end
end
@@ -0,0 +1,19 @@
defmodule LinkShortenerWeb.ChangesetView do
use LinkShortenerWeb, :view
@doc """
Traverses and translates changeset errors.
See `Ecto.Changeset.traverse_errors/2` and
`LinkShortenerWeb.ErrorHelpers.translate_error/1` for more details.
"""
def translate_errors(changeset) do
Ecto.Changeset.traverse_errors(changeset, &translate_error/1)
end
def render("error.json", %{changeset: changeset}) do
# When encoded, the changeset returns its errors
# as a JSON object. So we just pass it forward.
%{errors: translate_errors(changeset)}
end
end