ash/lib/ash.ex
2019-10-11 11:18:59 -07:00

45 lines
1 KiB
Elixir

defmodule Ash do
alias Ash.Resource.Relationships.{BelongsTo, HasOne, HasMany, ManyToMany}
@type record :: struct
@type cardinality_one_relationship() :: HasOne.t() | BelongsTo.t()
@type cardinality_many_relationship() :: HasMany.t() | ManyToMany.t()
@type relationship :: cardinality_one_relationship() | cardinality_many_relationship()
@type query :: term
@type resource :: module
@type error :: struct
@type side_load_keyword :: Keyword.t()
def resources() do
Application.get_env(:ash, :resources) || []
end
def relationships(resource) do
resource.relationships()
end
def actions(resource) do
resource.actions()
end
def attributes(resource) do
resource.attributes()
end
def name(resource) do
resource.name()
end
def type(resource) do
resource.type()
end
def data_layer(resource) do
resource.data_layer()
end
def to_resource(%resource{}), do: resource
def to_resource(resource) when is_atom(resource), do: resource
## Datalayer shit TODO move this elsewhere
end