Current section

Files

Jump to
ash_json_api lib ash_json_api resource info.ex
Raw

lib/ash_json_api/resource/info.ex

defmodule AshJsonApi.Resource.Info do
@moduledoc "Introspection helpers for AshJsonApi.Resource"
alias Spark.Dsl.Extension
def type(resource) do
Extension.get_opt(resource, [:json_api], :type, nil, false)
end
def includes(resource) do
Extension.get_opt(resource, [:json_api], :includes, [], false)
end
def base_route(resource) do
Extension.get_opt(resource, [:json_api, :routes], :base, nil, false)
end
def primary_key_fields(resource) do
Extension.get_opt(resource, [:json_api, :primary_key], :keys, [], false)
end
def primary_key_delimiter(resource) do
Extension.get_opt(resource, [:json_api, :primary_key], :delimiter, [], false)
end
def routes(resource, domain_or_domains \\ []) do
module =
if is_atom(resource) do
resource
else
Spark.Dsl.Extension.get_persisted(resource, :module)
end
domain_or_domains
|> List.wrap()
|> Enum.flat_map(&AshJsonApi.Domain.Info.routes/1)
|> Enum.filter(&(&1.resource == module))
|> Enum.concat(Extension.get_entities(resource, [:json_api, :routes]))
end
def include_nil_values?(resource) do
Extension.get_opt(resource, [:json_api], :include_nil_values?, nil, true)
end
def default_fields(resource) do
Extension.get_opt(resource, [:json_api], :default_fields, nil, true)
end
end