fix: issue #3 slow rendering

This commit is contained in:
2026-07-05 10:26:21 +02:00
parent 1917043c10
commit fcc574428c
11 changed files with 896 additions and 234 deletions

View File

@@ -3,43 +3,58 @@ defmodule BDS.Rendering do
alias BDS.Rendering.ListArchive
alias BDS.Rendering.PostRendering
alias BDS.Rendering.RenderContext
alias BDS.Rendering.TemplateSelection
def render_post_page(project_id, template_slug, assigns)
when is_binary(project_id) and is_map(assigns) do
render_post_page(RenderContext.build(project_id), template_slug, assigns)
end
def render_post_page(%RenderContext{} = ctx, template_slug, assigns) when is_map(assigns) do
with {:ok, template_source} <-
TemplateSelection.load_template_source(project_id, :post, template_slug),
TemplateSelection.load_template_source(ctx, :post, template_slug),
{:ok, rendered} <-
TemplateSelection.render_template(
project_id,
ctx,
template_source,
PostRendering.post_assigns(project_id, assigns)
PostRendering.post_assigns(ctx, assigns)
) do
{:ok, rendered}
end
end
def render_list_page(project_id, assigns) when is_binary(project_id) and is_map(assigns) do
with {:ok, template_source} <- TemplateSelection.load_template_source(project_id, :list, nil),
render_list_page(RenderContext.build(project_id), assigns)
end
def render_list_page(%RenderContext{} = ctx, assigns) when is_map(assigns) do
with {:ok, template_source} <- TemplateSelection.load_template_source(ctx, :list, nil),
{:ok, rendered} <-
TemplateSelection.render_template(
project_id,
ctx,
template_source,
ListArchive.list_assigns(project_id, assigns)
ListArchive.list_assigns(ctx, assigns)
) do
{:ok, rendered}
end
end
def render_not_found_page(project_id, assigns \\ %{})
def render_not_found_page(ctx_or_project_id, assigns \\ %{})
def render_not_found_page(project_id, assigns)
when is_binary(project_id) and is_map(assigns) do
render_not_found_page(RenderContext.build(project_id), assigns)
end
def render_not_found_page(%RenderContext{} = ctx, assigns) when is_map(assigns) do
with {:ok, template_source} <-
TemplateSelection.load_template_source(project_id, :not_found, nil),
TemplateSelection.load_template_source(ctx, :not_found, nil),
{:ok, rendered} <-
TemplateSelection.render_template(
project_id,
ctx,
template_source,
ListArchive.not_found_assigns(project_id, assigns)
ListArchive.not_found_assigns(ctx, assigns)
) do
{:ok, rendered}
end