kvs_subscription.erl 760 B

1234567891011121314151617181920212223
  1. -module(kvs_subscription).
  2. -copyright('Synrc Research Center s.r.o.').
  3. -include("subscription.hrl").
  4. -include("metainfo.hrl").
  5. -compile(export_all).
  6. metainfo() ->
  7. #schema{name=kvs,tables=[
  8. #table{name=subscription,fields=record_info(fields,subscription),keys=[id,whom,who]}
  9. ]}.
  10. subscribe(Who, Whom) -> kvs:put(#subscription{key={Who,Whom},who = Who, whom = Whom}).
  11. unsubscribe(Who, Whom) ->
  12. case subscribed(Who, Whom) of
  13. true -> kvs:delete(subscription, {Who, Whom});
  14. false -> skip end.
  15. subscriptions(UId) -> kvs:index(subscription, who, UId).
  16. subscribed(Who) -> kvs:index(subscription, whom, Who).
  17. subscribed(Who, Whom) ->
  18. case kvs:get(subscription, {Who, Whom}) of
  19. {ok, _} -> true;
  20. _ -> false end.