2022-10-29 04:21:13 +13:00
|
|
|
defmodule AshBlog.DataLayer.Info do
|
|
|
|
@moduledoc """
|
|
|
|
Introspection helpers for the AshBlog data layer.
|
|
|
|
"""
|
|
|
|
|
|
|
|
alias Spark.Dsl.Extension
|
|
|
|
|
|
|
|
def folder(resource) do
|
2022-10-29 06:57:02 +13:00
|
|
|
Extension.get_opt(resource, [:blog], :folder, "blog/published")
|
2022-10-29 04:21:13 +13:00
|
|
|
end
|
|
|
|
|
|
|
|
def staging_folder(resource) do
|
2022-10-29 06:57:02 +13:00
|
|
|
Extension.get_opt(resource, [:blog], :staging_folder, "blog/staged")
|
2022-10-29 04:21:13 +13:00
|
|
|
end
|
|
|
|
|
|
|
|
def archive_folder(resource) do
|
2022-10-29 06:57:02 +13:00
|
|
|
Extension.get_opt(resource, [:blog], :archive_folder, "blog/archived")
|
2022-10-29 04:21:13 +13:00
|
|
|
end
|
|
|
|
|
|
|
|
def file_namer(resource) do
|
|
|
|
Extension.get_opt(resource, [:blog], :file_namer, {AshBlog.FileNamer, :name_file, []})
|
|
|
|
end
|
|
|
|
|
|
|
|
def created_at_attribute(resource) do
|
|
|
|
Extension.get_opt(resource, [:blog], :created_at_attribute, :created_at)
|
|
|
|
end
|
|
|
|
|
|
|
|
def body_attribute(resource) do
|
|
|
|
Extension.get_opt(resource, [:blog], :body_attribute, :body)
|
|
|
|
end
|
|
|
|
|
2022-11-01 20:11:06 +13:00
|
|
|
def slug_attribute(resource) do
|
|
|
|
Extension.get_opt(resource, [:blog], :slug_attribute, :slug)
|
|
|
|
end
|
|
|
|
|
2022-10-29 04:21:13 +13:00
|
|
|
def title_attribute(resource) do
|
|
|
|
Extension.get_opt(resource, [:blog], :title_attribute, :title)
|
|
|
|
end
|
|
|
|
|
|
|
|
def file_name(%resource{} = record) do
|
|
|
|
{mod, fun, args} = file_name(resource)
|
|
|
|
|
|
|
|
case apply(mod, fun, [record | args]) do
|
|
|
|
{:ok, value} ->
|
|
|
|
{:ok, value}
|
|
|
|
|
|
|
|
{:error, error} ->
|
|
|
|
{:error, error}
|
|
|
|
|
|
|
|
value ->
|
|
|
|
raise """
|
|
|
|
Invalid value returned from file namer `#{inspect(mod)}.#{fun}/#{Enum.count(args) + 1}`.
|
|
|
|
|
|
|
|
Expected `{:ok, value}` or `{:error, error}`, got:
|
|
|
|
|
|
|
|
#{inspect(value)}
|
|
|
|
"""
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|