length(Db,Ns) and tests for get,set and length.
This commit is contained in:
parent
ee4059ac5a
commit
e55e0bd8a3
2 changed files with 18 additions and 3 deletions
|
@ -6,7 +6,8 @@
|
||||||
|
|
||||||
-module(ggs_db).
|
-module(ggs_db).
|
||||||
-import(mnesia).
|
-import(mnesia).
|
||||||
-export([init/0,setItem/4,getItem/3]).
|
%-compile({no_auto_import,[length/2]}).
|
||||||
|
-export([init/0,setItem/4,getItem/3,length/2]).
|
||||||
-include("ggs_db.hrl").
|
-include("ggs_db.hrl").
|
||||||
|
|
||||||
%%-----------------------------------------------------
|
%%-----------------------------------------------------
|
||||||
|
@ -45,3 +46,10 @@ getItem(Db,Ns,Key) ->
|
||||||
end,
|
end,
|
||||||
mnesia:transaction(Fun).
|
mnesia:transaction(Fun).
|
||||||
|
|
||||||
|
length(Db,Ns) ->
|
||||||
|
Fun = fun() ->
|
||||||
|
Keys = mnesia:all_keys(data),
|
||||||
|
length(lists:filter(fun({A,B,_}) -> ((A==Db) and (B==Ns)) end, Keys))
|
||||||
|
end,
|
||||||
|
{atomic, Ret} = mnesia:transaction(Fun),
|
||||||
|
Ret.
|
||||||
|
|
|
@ -9,11 +9,18 @@
|
||||||
|
|
||||||
|
|
||||||
%Key should be a tuple of two elements
|
%Key should be a tuple of two elements
|
||||||
setup_test() ->
|
get_set_test() ->
|
||||||
mnesia:start(),
|
mnesia:start(),
|
||||||
ggs_db:init(),
|
ggs_db:init(),
|
||||||
ggs_db:setItem("dbname","nsname","keyname","Hello"),
|
ggs_db:setItem("dbname","nsname","keyname","Hello"),
|
||||||
?assertMatch({atomic,"Hello"},ggs_db:getItem("dbname","nsname","keyname")),
|
?assertMatch({atomic,"Hello"},ggs_db:getItem("dbname","nsname","keyname")).
|
||||||
|
|
||||||
|
length_test() ->
|
||||||
|
ggs_db:setItem(1,1,2,"112"),
|
||||||
|
ggs_db:setItem(1,2,2,"122"),
|
||||||
|
ggs_db:setItem(1,1,3,"113"),
|
||||||
|
ggs_db:setItem(1,1,4,"114"),
|
||||||
|
?assertEqual(ggs_db:length(1,1), 3),
|
||||||
mnesia:stop().
|
mnesia:stop().
|
||||||
|
|
||||||
%cleanup(Val) ->
|
%cleanup(Val) ->
|
||||||
|
|
Reference in a new issue