aboutsummaryrefslogtreecommitdiffstats
path: root/server/cldb.erl
diff options
context:
space:
mode:
Diffstat (limited to 'server/cldb.erl')
-rw-r--r--server/cldb.erl32
1 files changed, 23 insertions, 9 deletions
diff --git a/server/cldb.erl b/server/cldb.erl
index d514ff9..f6c7821 100644
--- a/server/cldb.erl
+++ b/server/cldb.erl
@@ -1,7 +1,7 @@
% The clientdatabase
-module(cldb).
--export([init/0, ask/2, login/2, decVote/1, incVote/1, register/3, check_rights/1]).
+-export([init/0,all/0, ask/2, login/2, decVote/1, incVote/1, register/3, check_rights/1, give_votes/1]).
-record(user, {name, passwd, votes, rights}).
init() ->
@@ -12,10 +12,18 @@ init() ->
ask(User, Pwd) ->
F = fun() ->
- mnesia:match_object({user, User, Pwd, '_', '_'})
+ mnesia:match_object({user, User, Pwd, '_', '_'})
end,
mnesia:transaction(F).
+all() ->
+ F = fun() ->
+ mnesia:match_object({user, '_', '_', '_', '_'})
+ end,
+ {atomic, List} = mnesia:transaction(F),
+ List.
+
+
login(User, Pwd) ->
case ask(User, Pwd) of
{atomic, [UserRow|_]} -> {ok, UserRow};
@@ -38,14 +46,20 @@ register(User, Pwd, Root) ->
{error, duplicated_user}
end.
+decVote(User) when is_list(User) ->
+ {atomic, [Head|_]} = ask(User, '_'),
+ if Head#user.votes > 0 ->
+ F = fun() ->
+ Votes = Head#user.votes - 1,
+ New = Head#user{votes = Votes},
+ mnesia:write(New)
+ end,
+ mnesia:transaction(F),
+ {ok};
+ true -> {error}
+ end;
decVote(User) ->
- F = fun() ->
- [Head|_] = ask(User, '_'),
- Votes = Head#user.votes - 1,
- New = Head#user{votes = Votes},
- mnesia:write(New)
- end,
- mnesia:transaction(F).
+ decVote(User#user.name).
incVote(User) ->
F = fun() ->