From 959bb8a2a3d4c7171db074235b92a3035da7ddb5 Mon Sep 17 00:00:00 2001 From: aj heller Date: Mon, 17 Dec 2012 23:52:20 -0800 Subject: [PATCH] adds flatzone lookup by TzName to both db implementations --- src/ezic_db.erl | 9 +++++++++ src/ezic_db_ets.erl | 5 ++++- src/ezic_db_mnesia.erl | 10 ++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/ezic_db.erl b/src/ezic_db.erl index b9599b9..7fe31df 100644 --- a/src/ezic_db.erl +++ b/src/ezic_db.erl @@ -8,6 +8,7 @@ -export([ zones/1 , rules/1 + , flatzones/1 , flatzone/2 %, insert/2 , get_all/1 @@ -43,6 +44,10 @@ rules(TzName) -> gen_server:call(?MODULE, {rules, TzName}). +flatzones(TzName) -> + gen_server:call(?MODULE, {flatzones, TzName}). + + flatzone(Date, TzName) -> gen_server:call(?MODULE, {flatzone, Date, TzName}). @@ -103,6 +108,10 @@ handle_call({all, Tab}, _, State) -> Mod= State#state.mod, Matches= Mod:get_all(Tab), {reply, Matches, State}; +handle_call({flatzones, Name}, _, State) -> + Mod= State#state.mod, + Result= Mod:flatzones(Name), + {reply, Result, State}; handle_call({flatzone, Date, Name}, _, State) -> Mod= State#state.mod, Result= Mod:flatzone(Date, Name), diff --git a/src/ezic_db_ets.erl b/src/ezic_db_ets.erl index 09ef44b..407adc0 100644 --- a/src/ezic_db_ets.erl +++ b/src/ezic_db_ets.erl @@ -8,6 +8,7 @@ init/0 , zones/1 , rules/1 + , flatzones/1 , flatzone/2 %, insert/2 , get_all/1 @@ -27,10 +28,12 @@ implementation() -> ?MODULE. zones(TzName) -> ets:select(zone, [{#zone{name=TzName, _='_'}, [], ['$_']}]). - rules(TzName) -> ets:select(rule, [{#rule{name=TzName, _='_'}, [], ['$_']}]). +flatzones(TzName) -> + ets:select(flatzone, [{#flatzone{tzname=TzName, _='_'}, [], ['$_']}]). + flatzone(Date, TzName) -> FlatZones= ets:select(flatzone, ezic_flatten:ms(Date, TzName)), diff --git a/src/ezic_db_mnesia.erl b/src/ezic_db_mnesia.erl index 7aec684..4b65858 100644 --- a/src/ezic_db_mnesia.erl +++ b/src/ezic_db_mnesia.erl @@ -8,6 +8,7 @@ init/0 , zones/1 , rules/1 + , flatzones/1 , flatzone/2 %, insert/2 , get_all/1 @@ -50,6 +51,15 @@ rules(Name) -> {atomic, Rules}= mnesia:transaction(F), Rules. +% retrieve all flatzones by tz name +flatzones(Name) -> + F = fun()-> + Q = qlc:q([Z || Z=#flatzone{tzname=N} <- mnesia:table(flatzone), N=:=Name]), + qlc:e(Q) + end, + {atomic, FlatZones}= mnesia:transaction(F), + FlatZones. + % get all records from table get_all(Tab) when is_atom(Tab) -> F = fun() ->