sloanelybutsurely.com/lib/web/controllers/blog_controller.ex
2025-04-12 13:04:57 -04:00

29 lines
857 B
Elixir

defmodule Web.BlogController do
use Web, :controller
def index(conn, _params) do
blogs = Core.Posts.get_published_recent_posts(:blog)
blogs_by_year =
blogs
|> Enum.group_by(fn blog ->
date = Core.Posts.publish_date(blog)
date && date.year
end)
|> Enum.sort_by(fn {year, _} -> year end, :desc)
render(conn, :index, blogs_by_year: blogs_by_year)
end
def show(conn, %{"year" => year, "month" => month, "day" => day, "slug" => slug}) do
with {year, ""} <- Integer.parse(year),
{month, ""} <- Integer.parse(month),
{day, ""} <- Integer.parse(day),
{:ok, publish_date} <- Date.new(year, month, day) do
blog = Core.Posts.get_published_blog!(publish_date, slug)
render(conn, :show, blog: blog)
else
_ -> raise Ecto.NoResultsError
end
end
end