sloanelybutsurely.com/lib/web/paths.ex
2025-05-09 16:08:35 -04:00

28 lines
915 B
Elixir

defmodule Web.Paths do
use Web, :html
# there's duplication in here because `url/1/2/3` requires a compile time ~p
def public_post_url(%Schema.Post{kind: :status} = status) do
url(Web.Endpoint, ~p"/status/#{status}")
end
def public_post_url(%Schema.Post{kind: :blog} = blog) do
if date = Core.Posts.publish_date(blog) do
url(Web.Endpoint, ~p"/blog/#{date.year}/#{date.month}/#{date.day}/#{blog.slug}")
end
end
def public_post_path(%Schema.Post{kind: :status} = status), do: public_status_path(status)
def public_post_path(%Schema.Post{kind: :blog} = blog), do: public_blog_path(blog)
def public_status_path(%Schema.Post{kind: :status} = status) do
~p"/status/#{status}"
end
def public_blog_path(%Schema.Post{kind: :blog} = blog) do
if date = Core.Posts.publish_date(blog) do
~p"/blog/#{date.year}/#{date.month}/#{date.day}/#{blog.slug}"
end
end
end