aboutsummaryrefslogtreecommitdiffstats
path: root/server/cldb.erl
diff options
context:
space:
mode:
Diffstat (limited to 'server/cldb.erl')
-rw-r--r--server/cldb.erl47
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.
+