Current section
Files
Jump to
Current section
Files
lib/behaviors/entity.ex
defmodule Manganese.EntityKit.Behaviors.Entity do
@moduledoc """
"""
alias Manganese.CoreKit
alias Manganese.EntityKit.Protocols
@typedoc """
"""
@type id :: pos_integer
@typedoc """
"""
@type t :: term
@doc """
"""
@spec serialize(t, atom, (t, atom -> map)) :: { :ok, t } | { :error, CoreKit.Structs.APIError.t }
def serialize(entity, entity_type, serializer) do
try do
entity
|> Protocols.SerializableEntity.serialize(entity_type)
rescue
Protocol.UndefinedError ->
serializer.(entity, entity_type)
end
end
@doc """
"""
@spec reload(t, atom, module) :: { :ok, t } | { :error, CoreKit.Structs.APIError.t }
def reload(entity, entity_type, repo) do
try do
entity
|> Protocols.ReloadableEntity.reload(entity_type, repo)
rescue
Protocol.UndefinedError ->
repo.reload_entity entity, entity_type
end
end
end