rest_users.erl 1000 B

123456789101112131415161718192021222324252627282930313233343536
  1. -module(rest_users).
  2. -compile({parse_transform, rest}).
  3. -export([init/0, populate/1, new/0, exists/1, get/0, get/1, post/1, delete/1]).
  4. -export([keys_allowed/1]).
  5. -record(user, {id, cn, name, type}).
  6. -rest_record(user).
  7. keys_allowed(Keys) ->
  8. Allow = [<<"id">>, <<"test">>],
  9. lists:all(fun(X) ->
  10. lists:member(X, Allow)
  11. end, Keys).
  12. new() -> #user{}.
  13. init() -> ets:new(rest_users, [public, named_table, {keypos, #user.id}]).
  14. populate(Users) -> ets:insert(rest_users, Users).
  15. exists(Id) ->
  16. X = ets:member(rest_users, erlang:binary_to_list(Id)),
  17. io:format("Member: ~p~n", [X]),
  18. X.
  19. get() -> ets:tab2list(rest_users).
  20. get(Id) ->
  21. [U] = ets:lookup(rest_users, erlang:binary_to_list(Id)),
  22. io:format("User: ~p~n", [U]),
  23. U.
  24. delete(Id) -> ets:delete(rest_users, erlang:binary_to_list(Id)).
  25. post(#user{} = User) -> ets:insert(rest_users, User);
  26. post(Data) -> post(from_json(Data, #user{})).