Update Public.get_autor! to only display public Artikel

Also get rid of the superfluous additional loop over articles/translations.
This commit is contained in:
Thelonius Kort
2023-03-03 22:05:52 +01:00
parent 5319785855
commit 895860baa6
2 changed files with 24 additions and 7 deletions

View File

@ -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

View File

@ -4,10 +4,6 @@
<:subtitle><.link href={@autor.homepage_url}><%= @autor.homepage_name %></.link></:subtitle>
</.header>
<%= 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</.back>