Current section

Files

Jump to
libsnarl src ls_acc.erl
Raw

src/ls_acc.erl

-module(ls_acc).
-export([
create/4,
update/4,
destroy/4,
get/1,
get/2,
get/3
]).
-ignore_xref([
create/4,
update/4,
destroy/4,
get/1,
get/2,
get/3
]).
%%%===================================================================
%%% org Functions
%%%===================================================================
%%--------------------------------------------------------------------
%% @doc Creates a new resource for a given org.
%% @end
%%--------------------------------------------------------------------
-spec create(Org::fifo:org_id(), Resource::binary(), Time::pos_integer(),
Metadata::term()) ->
{error, no_servers} |
ok.
create(Org, Resource, Time, Metadata)
when is_binary(Org),
is_binary(Resource),
is_integer(Time), Time > 0 ->
send(libsnarl_msg:acc_create(r(), Org, Resource, Time, Metadata)).
%%--------------------------------------------------------------------
%% @doc Updates a resource for a given org.
%% @end
%%--------------------------------------------------------------------
-spec update(Org::fifo:org_id(), Resource::binary(), Time::pos_integer(),
Metadata::fifo:attr_list()) ->
{error, no_servers} |
ok.
update(Org, Resource, Time, Metadata)
when is_binary(Org),
is_binary(Resource),
is_integer(Time), Time > 0 ->
send(libsnarl_msg:acc_update(r(), Org, Resource, Time, Metadata)).
%%--------------------------------------------------------------------
%% @doc Destroys a resource for a given org.
%% @end
%%--------------------------------------------------------------------
-spec destroy(Org::fifo:org_id(), Resource::binary(), Time::pos_integer(),
Metadata::fifo:attr_list()) ->
{error, no_servers} |
ok.
destroy(Org, Resource, Time, Metadata)
when is_binary(Org),
is_binary(Resource),
is_integer(Time), Time > 0 ->
send(libsnarl_msg:acc_destroy(r(), Org, Resource, Time, Metadata)).
%%--------------------------------------------------------------------
%% @doc Gets all entries related to an organisation.
%% @end
%%--------------------------------------------------------------------
-spec get(Org::fifo:org_id()) ->
{error, no_servers} |
{ok, [{Time::pos_integer(), create|update|destroy,
Resource::binary(), Metadata::term()}]}.
get(Org)
when is_binary(Org) ->
send(libsnarl_msg:acc_get(r(), Org)).
%%--------------------------------------------------------------------
%% @doc Gets all entries related to a resource and organisation.
%% @end
%%--------------------------------------------------------------------
-spec get(Org::fifo:org_id(), Resource::binary()) ->
{error, no_servers} |
{ok, [{Time::pos_integer(), create|update|destroy,
Metadata::term()}]}.
get(Org, Resource)
when is_binary(Org),
is_binary(Resource) ->
send(libsnarl_msg:acc_get(r(), Org, Resource)).
%%--------------------------------------------------------------------
%% @doc Gets all entries related to resource of an organisation that
%% exist between two timestamps.
%% @end
%%--------------------------------------------------------------------
-spec get(Org::fifo:org_id(),
Start::pos_integer(), End::pos_integer()) ->
{error, no_servers} |
{ok, [{Time::pos_integer(), create|update|destroy,
Resource::binary(), Metadata::term()}]}.
get(Org, Start, End)
when is_binary(Org),
is_integer(Start),
is_integer(End),
Start > 0,
End > Start ->
send(libsnarl_msg:acc_get(r(), Org, Start, End)).
%%%===================================================================
%%% Internal Functions
%%%===================================================================
%%--------------------------------------------------------------------
%% @private
%% @doc Sends a message.
%% @spec send(Msg::term()) -> {ok, Reply::term()} | {error, no_servers}
%% @end
%%--------------------------------------------------------------------
-spec send(Msg::fifo:snarl_acc_message()) ->
atom() |
{ok, Reply::term()} |
{error, no_servers}.
send(Msg) ->
case libsnarl_server:call(Msg) of
{reply, Reply} ->
Reply;
E ->
E
end.
r() ->
application:get_env(libsnarl, realm, <<"default">>).