diff options
Diffstat (limited to '')
-rw-r--r-- | server/cldb.erl | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/server/cldb.erl b/server/cldb.erl index 0f9f407..982aafc 100644 --- a/server/cldb.erl +++ b/server/cldb.erl @@ -1,12 +1,53 @@ % The clientdatabase -module(cldb). --export([init/0]). --record(user, {name, passwd, votes}). +-export([init/0, ask/2, login/2, decVote/2, incVote/2, register/3, check_rights/2]). +-record(user, {name, passwd, votes, rights}). init() -> mnesia:create_schema([node()]), mnesia:start(), - mnesia:create_table(track, [{attributes, record_info(fields, track)}]), + mnesia:create_table(user, [{attributes, record_info(fields, user)}]), io:format("Userdb up and running \n"). +ask(User, Pwd) -> + F = fun() -> + mnesia:match_object({user, User, Pwd, '_'}) + end, + mnesia:transaction(F). + + + +login(User, Pwd) -> + {_, Reason} = ask(User, Pwd), + Reason. + +register(User, Pwd, Root) -> + F = fun() -> + mnesia:write(#user{name = User, passwd = Pwd, votes = 5, rights = Root}) + end, + {_, Reason} = mnesia:transaction(F), + Reason. + +decVote(User, Pwd) -> + F = fun() -> + [Head|_] = ask(User, Pwd), + Votes = Head#user.votes - 1, + New = Head#user{votes = Votes}, + mnesia:write(New) + end, + mnesia:transaction(F). + +incVote(User, Pwd) -> + F = fun() -> + [Head|_] = ask(User, Pwd), + Votes = Head#user.votes + 1, + New = Head#user{votes = Votes}, + mnesia:write(New) + end, + mnesia:transaction(F). + +check_rights(User, Name) -> + {_, _, Rights} = ask(User, Name), + Rights. + |