From 0c530dde5d1d7bffc2d107c5301a3bc432f028a5 Mon Sep 17 00:00:00 2001 From: Kallfaktorn Date: Tue, 22 Feb 2011 12:36:36 +0100 Subject: [PATCH] clear(GameToken) aded. --- erlang_js | 2 +- src/ggs_db.erl | 52 +++++++++++++++++++++++++------------------ tests/ggs_db_test.erl | 6 ++++- 3 files changed, 36 insertions(+), 24 deletions(-) diff --git a/erlang_js b/erlang_js index 709b568..5350ed2 160000 --- a/erlang_js +++ b/erlang_js @@ -1 +1 @@ -Subproject commit 709b568efbc99c954507d1593bc5633f900bc5dc +Subproject commit 5350ed21606606dbee5ecb07e974f2abb9106270 diff --git a/src/ggs_db.erl b/src/ggs_db.erl index 912d349..b21bab2 100644 --- a/src/ggs_db.erl +++ b/src/ggs_db.erl @@ -7,7 +7,7 @@ -module(ggs_db). -import(mnesia). %-compile({no_auto_import,[length/2]}). --export([init/0,setItem/4,getItem/3,removeItem/3,key/3,clear/2,length/2]). +-export([init/0,setItem/4,getItem/3,removeItem/3,key/3,clear/2,clear/1,length/2]). -include("ggs_db.hrl"). %%----------------------------------------------------- @@ -27,9 +27,9 @@ init() -> %%----------------------------------------------------- %% Insertions %%----------------------------------------------------- -setItem(Db,Ns,Key,Value) -> +setItem(GameToken,Ns,Key,Value) -> Fun = fun() -> - Data = #data{key = {Db,Ns,Key}, value = Value}, + Data = #data{key = {GameToken,Ns,Key}, value = Value}, mnesia:write(Data) end, mnesia:transaction(Fun). @@ -38,45 +38,53 @@ setItem(Db,Ns,Key,Value) -> %%----------------------------------------------------- %% Deletions %%----------------------------------------------------- -removeItem(Db,Ns,Key) -> +removeItem(GameToken,Ns,Key) -> Fun = fun() -> - mnesia:delete({data,{Db,Ns,Key}}) + mnesia:delete({data,{GameToken,Ns,Key}}) end, mnesia:transaction(Fun). -clear(Db,Ns) -> +clear(GameToken,Ns) -> Fun = fun() -> Keys = mnesia:all_keys(data), - Rest = lists:filter(fun({A,B,_}) -> ((A==Db) and (B==Ns)) end, Keys), + Rest = lists:filter(fun({A,B,_}) -> ((A==GameToken) and (B==Ns)) end, Keys), lists:map(fun({A,B,C}) -> removeItem(A,B,C) end, Rest) end, {atomic, Ret} = mnesia:transaction(Fun), Ret. - -%%----------------------------------------------------- -%% Querries -%%----------------------------------------------------- -getItem(Db,Ns,Key) -> - Fun = fun() -> - [Data] = mnesia:read(data, {Db,Ns,Key}), - Data#data.value - end, - mnesia:transaction(Fun). - -length(Db,Ns) -> +clear(GameToken) -> Fun = fun() -> Keys = mnesia:all_keys(data), - length(lists:filter(fun({A,B,_}) -> ((A==Db) and (B==Ns)) end, Keys)) + Rest = lists:filter(fun({A,_,_}) -> (A==GameToken) end, Keys), + lists:map(fun({A,B,C}) -> removeItem(A,B,C) end, Rest) end, {atomic, Ret} = mnesia:transaction(Fun), Ret. -key(Db,Ns,Position) -> +%%----------------------------------------------------- +%% Querries +%%----------------------------------------------------- +getItem(GameToken,Ns,Key) -> + Fun = fun() -> + [Data] = mnesia:read(data, {GameToken,Ns,Key}), + Data#data.value + end, + mnesia:transaction(Fun). + +length(GameToken,Ns) -> Fun = fun() -> Keys = mnesia:all_keys(data), - Rest = lists:filter(fun({A,B,_}) -> ((A==Db) and (B==Ns)) end, Keys), + length(lists:filter(fun({A,B,_}) -> ((A==GameToken) and (B==Ns)) end, Keys)) + end, + {atomic, Ret} = mnesia:transaction(Fun), + Ret. + +key(GameToken,Ns,Position) -> + Fun = fun() -> + Keys = mnesia:all_keys(data), + Rest = lists:filter(fun({A,B,_}) -> ((A==GameToken) and (B==Ns)) end, Keys), lists:nth(Position, Rest) end, {atomic, Ret} = mnesia:transaction(Fun), diff --git a/tests/ggs_db_test.erl b/tests/ggs_db_test.erl index ea6e12e..5f990c8 100644 --- a/tests/ggs_db_test.erl +++ b/tests/ggs_db_test.erl @@ -31,7 +31,11 @@ key_test() -> clear_test() -> ggs_db:clear(1,1), - ?assert(ggs_db:length(1,1) =:= 0), + ?assert(ggs_db:length(1,1) =:= 0). + +clear_GameToken_test() -> + ggs_db:clear(1), + ?assert((ggs_db:length(1,1) + ggs_db:length(1,2)) =:= 0), mnesia:stop(). %tests() ->