diff --git a/mnesia/ggs_db.erl b/mnesia/ggs_db.erl index 5067e16..0b59822 100644 --- a/mnesia/ggs_db.erl +++ b/mnesia/ggs_db.erl @@ -6,7 +6,8 @@ -module(ggs_db). -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"). %%----------------------------------------------------- @@ -45,3 +46,10 @@ getItem(Db,Ns,Key) -> end, 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. diff --git a/mnesia/ggs_db_test.erl b/mnesia/ggs_db_test.erl index 4baaaed..0e65593 100644 --- a/mnesia/ggs_db_test.erl +++ b/mnesia/ggs_db_test.erl @@ -9,11 +9,18 @@ %Key should be a tuple of two elements -setup_test() -> +get_set_test() -> mnesia:start(), ggs_db:init(), 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(). %cleanup(Val) ->