Support for Ecto backed Entities.
@callback as_entity( entity :: any(), record :: any(), settings :: Tuple, context :: any(), options :: any() ) :: {:ok, any()} | {:error, details :: any()}
@callback as_record( entity :: any(), settings :: Tuple, context :: any(), options :: any() ) :: {:ok, any()} | {:error, details :: any()}
@callback delete_record( entity :: any(), settings :: Tuple, context :: any(), options :: any() ) :: {:ok, any()} | {:error, details :: any()}
@callback fetch_as_entity( entity :: any(), settings :: Tuple, context :: any(), options :: any() ) :: {:ok, any()} | {:error, details :: any()}
@callback from_record( entity :: any(), settings :: Tuple, context :: any(), options :: any() ) :: {:ok, any()} | {:error, details :: any()}
@callback merge_from_record( entity :: any(), record :: any(), settings :: Tuple, context :: any(), options :: any() ) :: {:ok, any()} | {:error, details :: any()}
@callback persist( record :: any(), type :: :create | :update, settings :: Tuple, context :: any(), options :: any() ) :: {:ok, any()} | {:error, details :: any()}