clear(GameToken) aded.
This commit is contained in:
parent
597070f2d6
commit
0c530dde5d
3 changed files with 36 additions and 24 deletions
|
@ -1 +1 @@
|
||||||
Subproject commit 709b568efbc99c954507d1593bc5633f900bc5dc
|
Subproject commit 5350ed21606606dbee5ecb07e974f2abb9106270
|
|
@ -7,7 +7,7 @@
|
||||||
-module(ggs_db).
|
-module(ggs_db).
|
||||||
-import(mnesia).
|
-import(mnesia).
|
||||||
%-compile({no_auto_import,[length/2]}).
|
%-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").
|
-include("ggs_db.hrl").
|
||||||
|
|
||||||
%%-----------------------------------------------------
|
%%-----------------------------------------------------
|
||||||
|
@ -27,9 +27,9 @@ init() ->
|
||||||
%%-----------------------------------------------------
|
%%-----------------------------------------------------
|
||||||
%% Insertions
|
%% Insertions
|
||||||
%%-----------------------------------------------------
|
%%-----------------------------------------------------
|
||||||
setItem(Db,Ns,Key,Value) ->
|
setItem(GameToken,Ns,Key,Value) ->
|
||||||
Fun = fun() ->
|
Fun = fun() ->
|
||||||
Data = #data{key = {Db,Ns,Key}, value = Value},
|
Data = #data{key = {GameToken,Ns,Key}, value = Value},
|
||||||
mnesia:write(Data)
|
mnesia:write(Data)
|
||||||
end,
|
end,
|
||||||
mnesia:transaction(Fun).
|
mnesia:transaction(Fun).
|
||||||
|
@ -38,45 +38,53 @@ setItem(Db,Ns,Key,Value) ->
|
||||||
%%-----------------------------------------------------
|
%%-----------------------------------------------------
|
||||||
%% Deletions
|
%% Deletions
|
||||||
%%-----------------------------------------------------
|
%%-----------------------------------------------------
|
||||||
removeItem(Db,Ns,Key) ->
|
removeItem(GameToken,Ns,Key) ->
|
||||||
Fun = fun() ->
|
Fun = fun() ->
|
||||||
mnesia:delete({data,{Db,Ns,Key}})
|
mnesia:delete({data,{GameToken,Ns,Key}})
|
||||||
end,
|
end,
|
||||||
mnesia:transaction(Fun).
|
mnesia:transaction(Fun).
|
||||||
|
|
||||||
|
|
||||||
clear(Db,Ns) ->
|
clear(GameToken,Ns) ->
|
||||||
Fun = fun() ->
|
Fun = fun() ->
|
||||||
Keys = mnesia:all_keys(data),
|
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)
|
lists:map(fun({A,B,C}) -> removeItem(A,B,C) end, Rest)
|
||||||
end,
|
end,
|
||||||
{atomic, Ret} = mnesia:transaction(Fun),
|
{atomic, Ret} = mnesia:transaction(Fun),
|
||||||
Ret.
|
Ret.
|
||||||
|
|
||||||
|
clear(GameToken) ->
|
||||||
%%-----------------------------------------------------
|
|
||||||
%% Querries
|
|
||||||
%%-----------------------------------------------------
|
|
||||||
getItem(Db,Ns,Key) ->
|
|
||||||
Fun = fun() ->
|
|
||||||
[Data] = mnesia:read(data, {Db,Ns,Key}),
|
|
||||||
Data#data.value
|
|
||||||
end,
|
|
||||||
mnesia:transaction(Fun).
|
|
||||||
|
|
||||||
length(Db,Ns) ->
|
|
||||||
Fun = fun() ->
|
Fun = fun() ->
|
||||||
Keys = mnesia:all_keys(data),
|
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,
|
end,
|
||||||
{atomic, Ret} = mnesia:transaction(Fun),
|
{atomic, Ret} = mnesia:transaction(Fun),
|
||||||
Ret.
|
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() ->
|
Fun = fun() ->
|
||||||
Keys = mnesia:all_keys(data),
|
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)
|
lists:nth(Position, Rest)
|
||||||
end,
|
end,
|
||||||
{atomic, Ret} = mnesia:transaction(Fun),
|
{atomic, Ret} = mnesia:transaction(Fun),
|
||||||
|
|
|
@ -31,7 +31,11 @@ key_test() ->
|
||||||
|
|
||||||
clear_test() ->
|
clear_test() ->
|
||||||
ggs_db:clear(1,1),
|
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().
|
mnesia:stop().
|
||||||
|
|
||||||
%tests() ->
|
%tests() ->
|
||||||
|
|
Reference in a new issue