-module(rest_users). -compile({parse_transform, rest}). -export([init/0, populate/1, new/0, exists/1, get/0, get/1, post/1, delete/1]). -export([keys_allowed/1]). -record(user, {id, cn, name, type}). -rest_record(user). keys_allowed(Keys) -> Allow = [<<"id">>, <<"test">>], lists:all(fun(X) -> lists:member(X, Allow) end, Keys). new() -> #user{}. init() -> ets:new(rest_users, [public, named_table, {keypos, #user.id}]). populate(Users) -> ets:insert(rest_users, Users). exists(Id) -> X = ets:member(rest_users, erlang:binary_to_list(Id)), io:format("Member: ~p~n", [X]), X. get() -> ets:tab2list(rest_users). get(Id) -> [U] = ets:lookup(rest_users, erlang:binary_to_list(Id)), io:format("User: ~p~n", [U]), U. delete(Id) -> ets:delete(rest_users, erlang:binary_to_list(Id)). post(#user{} = User) -> ets:insert(rest_users, User); post(Data) -> post(from_json(Data, #user{})).