diff --git a/lib/outlook/public.ex b/lib/outlook/public.ex index 42c7c99..599ccd7 100644 --- a/lib/outlook/public.ex +++ b/lib/outlook/public.ex @@ -67,7 +67,28 @@ implement to_param protocol (no more needed for Outlook.Translations.Translation end def get_autor!(id) do - Repo.get!(Author, id) - |> Repo.preload([articles: [:translations]]) + q = from au in Author, + select: %Autor{ + name: au.name, + description: au.description, + homepage_name: au.homepage_name, + homepage_url: au.homepage_url, + }, + where: au.id == ^id + autor = Repo.one(q) + + q2 = from a in Article, + join: t in Translation, on: t.article_id == a.id, + select: %Artikel{ + title: t.title, + date: t.date, + teaser: t.teaser, + id: t.id, + date_org: a.date + }, + where: a.author_id == ^id and t.public == true + artikel = Repo.all(q2) + + %Autor{autor | artikel: artikel} end end diff --git a/lib/outlook_web/controllers/autor_html/show.html.heex b/lib/outlook_web/controllers/autor_html/show.html.heex index 5272e73..ac34300 100644 --- a/lib/outlook_web/controllers/autor_html/show.html.heex +++ b/lib/outlook_web/controllers/autor_html/show.html.heex @@ -4,10 +4,6 @@ <:subtitle><.link href={@autor.homepage_url}><%= @autor.homepage_name %> - - -<%= for article <- @autor.articles do %> - <.artikel :for={translation <- article.translations} artikel={translation} show_autor={false} /> -<% end %> +<.artikel :for={artikel <- @autor.artikel} artikel={artikel} show_autor={false} /> <.back navigate={~p"/autoren"}>Back to autoren