From b20bbb232c35cb4c246267b76a93f75faec5c50b Mon Sep 17 00:00:00 2001 From: Thelonius Kort Date: Thu, 2 Mar 2023 23:17:21 +0100 Subject: [PATCH] Refactor query functions --- lib/outlook/public.ex | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lib/outlook/public.ex b/lib/outlook/public.ex index f8b5644..42c7c99 100644 --- a/lib/outlook/public.ex +++ b/lib/outlook/public.ex @@ -8,7 +8,7 @@ implement to_param protocol (no more needed for Outlook.Translations.Translation alias Outlook.Translations.Translation alias Outlook.Articles.Article alias Outlook.Authors.Author - alias Outlook.Public.Artikel + alias Outlook.Public.{Artikel,Autor} import Ecto.Query, warn: false alias Outlook.Repo @@ -17,19 +17,17 @@ implement to_param protocol (no more needed for Outlook.Translations.Translation q = from t in Translation, join: a in Article, on: t.article_id == a.id, join: au in Author, on: a.author_id == au.id, - select: [ + select: %Artikel{ title: t.title, date: t.date, teaser: t.teaser, id: t.id, date_org: a.date, autor_name: au.name, - ], + }, where: t.public == true and t.language == ^language, order_by: [desc: t.date] Repo.all(q) - # |> Enum.map(fn rec -> Enum.into(rec, %{}) end) - |> Enum.map(fn map -> struct(Artikel, map) end) end def get_artikel!(artikel) when is_struct(artikel), do: get_artikel!(artikel.id) @@ -37,7 +35,7 @@ implement to_param protocol (no more needed for Outlook.Translations.Translation q = from t in Translation, join: a in Article, on: t.article_id == a.id, join: au in Author, on: a.author_id == au.id, - select: [ + select: %Artikel{ title: t.title, date: t.date, public_content: t.public_content, @@ -46,11 +44,11 @@ implement to_param protocol (no more needed for Outlook.Translations.Translation date_org: a.date, autor_name: au.name, autor_id: au.id - ], + }, where: t.id == ^id and t.public == true case Repo.one(q) do nil -> {:error, "Artikel does not exist, or isn't public."} - artikel -> {:ok, struct(Artikel, artikel)} + artikel -> {:ok, artikel} end end